React
React现在有一个名为Hooks的新功能提案,可以让开发者在不撰写类别(Class)的情况下,使用状态和其他React的功能,但官方强调,现在并没有任何删除类别的计划,开发者不需要急着学习Hooks,而且Hooks也完全向后相容。有兴趣的开发者可以在React v16.7.0-alpha找到Hooks功能,现在社群也在开放RFC热烈讨论中,官方预计顺利将会在React v16.7中加入Hooks。
由于React没有提供附加(Attach)可重复使用行为到元件上的方法,进阶的使用者会在熟悉渲染工具或是高阶元件等模式,尝试解决这个问题,但是这些模式会要求开发者在使用的时候重构元件,这个过程可能很麻烦又或是让程式变得难以遵循。
在React DevTools中典型的应用程序,通常可以找到被戏称为包装器地狱的元件,包含着像是提供者、消费者、高阶元件、渲染工具以及其他抽象等各层,虽然可以在DevTools中以过滤器过滤掉这类元件,但官方表示,这也指出了更基本的问题,React显然需要一个更好的原语(Primitive)来共享状态逻辑。
而Hooks便是来填补这个功能上的空缺,开发者可以从元件中提取状态逻辑,以便可以独立测试并重复使用,Hooks允许开发者可以在不更改元件层次结构的情况下重用状态逻辑,如此便能更轻松的在许多元件或社群间分享Hooks。
元件从简单发展到复杂,不少会发生难以管理的状态逻辑灾难以及其他缺陷,每个生命周期的方法通常混合了不相关的逻辑,像是元件可能会在componentDidMount和componentDidUpdate中,提取一些资料,但是相同的componentDidMount方法,可能还包含一些设置事件监听器等不相关的逻辑,并在componentWillUnmount中执行清理。不相关的功能被组合在同一个方法中,将容易产生错误以及不一致的情况。
在许多情况下, 这些元件难以被分解成更小的元件,由于状态逻辑遍布在各处,也让测试变得困难,而这也是不少开发者更喜欢将React和单独的状态管理库结合的原因,但是如此又常会引入太多的抽象,让开发者需要在不同档案中跳转,使重用元件变得困难。
Hooks允许开发者根据相关的部分,像是设置订阅或是获取资料等功能,将一个元件拆分成较小的函式,而不是基于生命周期方法强制拆分,另外,开发者也可以选择使用Reducer管理元件的本机状态,使其更具可预测性。
官方提到,在他们的观察中,类别是初学者在学习React中最大的障碍,必须了解Class在JavaScript中运作的方式,而这部分与大多数语言有很大的不同,开发者通常能够很好地理解工具、状态以及资料流,但是却很常在类别中卡住,即便是在经验丰富的开发者间,也会对React的函式和类别元件间的使用区别存在分歧。
Svelte、Angular和Glimmer等框架展现了元件AOT编译的潜力,React也想在这部分跟进,最近官方开始尝试使用Prepack进行元件折叠(Component Folding),初始阶段获得很不错的结果,但同时也发现,类别元件可能导致最佳化的障碍,而在现今的工具上,类别也很难被良好的缩小,并使热重载不可靠。
Hooks提供开发者在没有类别的情况下,使用更多的React功能,从概念上来说,React元件更接近函式,Hooks能拥抱函式却又不牺牲React的实际精神。即便类别存在这么多问题,但官方强调,打算让Hooks能够涵盖所有类别使用案例,但目前并没有任何要删除React类别的计划。
开发者不需要现在就学习Hooks的使用方式,Hooks与既存程式码可以共同工作,开发者可以选择逐步采用。要在React增加原语的门槛很高,官方现在透过释出实验性的API,来获取社群中的回馈,有兴趣的开发者也可以从官方准备的RFC中获得更多的资讯。
相关文章
- YouTube更新违反规定政策,提升惩处透明度和一致性
2023-12-31 14:00:52
- 传苹果将把中国iCloud正式交给本地化经营 苹果手机icloud换区存储操作
2023-12-27 18:34:43
- 刘德华代言什么手机?刘德华成华为Mate 60 RS非凡大师华为5G新手机代言人
2023-09-26 21:55:08
- WebOS新系统:Palm Pre手机最新款高价登港
2023-06-23 15:39:14
- 帮助企业组织对抗勒索软件,资安通报机构设立防护专区,可协助事前、事中与事后因应
2023-06-22 09:36:10
- 蔚来全系产品降价3万 取消免费换电 换一次电池180元
2023-06-12 17:27:49
- 电商平台三巨头开打最大规模折扣 价格战再次打响
2023-03-05 18:58:40
- 爱立信节省成本裁员四千人 爱立信全球员工总数五分之一
2023-02-24 22:27:29
- 蜜芽关停近况,八位数重金买三字顶级新域名mia.com也关闭
2023-02-23 16:18:14
- 联想CEO杨元庆:联想集团需要裁员32%削减部分业务支出
2023-02-18 12:45:25
- 蓝色光标2022营收亏损18亿 客户预算减少明显
2023-02-18 12:40:08
- 三星工厂或将80%生产转至越南 因本地劳动力成本上升
2023-02-17 23:09:16
- 香港八达通卡如何激活?没用失效过期余额怎么办
2023-02-17 18:34:51
- 中兴通讯被曝将裁员20% 称只裁国外的
2023-02-17 18:33:26
- 苹果新iPhone15Pro手机终于改用USB-C(火牛)数据线??Lightning充电接口退出
2023-02-17 16:57:22
- 突发!蓝色光标曾为中国民企500强龙头 如今业绩亏损断崖下跌
2023-02-16 14:31:19
- 三星发布自家carplay车载中控系统 Car Mode for Galaxy 可以连接carplay吗?
2023-02-14 00:53:17
- Opera浏览器宣布集成ChatGPT 一键生成网页内容摘要
2023-02-14 00:32:08
- 谷歌google计划重返进入中国市场?但结果可能令你失望
2023-02-13 16:57:15
- Zoom紧急裁员1300人 佔员工总数15%
2023-02-08 14:59:11
最新资讯
- YouTube更新违反规定政策,提升惩处透明度和一致性2023-12-31 14:00:52
- 美国法院裁定阿里须为Squishmallows玩具侵权案答辩2023-12-28 19:59:34
- 小米汽车传员工3700人 雷军称小米汽车不可能卖9万92023-12-28 19:41:57
- 吉利飙逾6% 电动车品牌极氪新车款极氪007昨上市 预售价格22.99万元2023-12-28 19:30:28
- 日本丰田汽车厂11月全球产量创新高2023-12-28 19:26:02
手机
- 中国11月手机出货量增34% 5G手机出货量2709.2万部2023-12-28 19:27:57
- 荣耀发布新一代旗舰荣耀Magic5系列,新款上市价格分期0首付3999元起2023-03-06 16:12:32
- 美国商务部指违禁,长江存储被美国拜登制裁名单面临停工裁员2023-02-17 18:41:53
- 苹果Apple iOS车载系统CarPlay支持哪些更多汽车品牌2023-02-02 17:33:27
- 香港去哪买三星手机回来吗? 买香港便宜售价手机市场地点和网站2023-02-02 11:03:11
数码
- 华为5G芯片正式亮相:预示华为将发首款5G手机2023-08-31 13:22:33
- 腾讯传计划放弃虚拟现实VR硬件计划2023-02-17 23:32:30
- 三星手机份额大跌!三星手机中国市场份额变化国内仅剩3%2023-02-01 17:06:15
- 三星手机份额大跌在中国没市场了!国内市场占有率仅剩1%国外比苹果销量高2023-02-01 16:59:53
- vivo发布2022 vivoNEX手机极简易浏览器下载:简洁流畅无广告!2022-12-02 17:29:30
科技
- 中兴受美国制裁事件 被罚了20亿美元过程事件始末 中兴被制裁后公司现状2023-11-02 22:12:46
- B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因2023-03-06 19:05:55
- 苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓2023-02-19 15:09:54
- 华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?2023-02-17 23:21:27
- google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元2023-02-17 18:58:09