虽然没有太多的事情强调在新的反应JS 17版本,有一些新的high-sway增强反应JS核心。
最新的增强
更令人兴奋的增强是反应JS编译的方式。让我们看一下编译代码的JSX组件,该组件使用一个旧版本的反应JS:
使用函数”的反应。createElement”, JS依赖性反应应该是可用的范围。首先你必须导入反应JS在每个组件。
一旦你升级到反应JS 17,你可以移除反应JS进口从组件的代码,如果只有JSX。
编译后的版本不需要进口的反应。在下图中可以看到,反应JS 17编译器进口一个新的依赖从“/ jsx-runtime反应,”负责JSX转换。
重要的是要理解,整体效果将是可见的,当你有更多的反应JS代码库中的组件。
为什么你需要移除反应JS进口吗
包大小减少
你编译打包输出将变得更小,当你移除反应JS导入。您需要删除反应JS从编译器的各个组件的进口取代反应JS的子模块,如下所示。
共享的组件更容易
这可能听起来不算多,但是当节点发布组件包管理器(NPM),您需要确保反应不是配置为一个“依赖”而是“peerDependency。“这降低了组件捆绑大小和阻止的情况下反应JS多次安装不同版本。
减少动态属性查找
JS 17不再使用“反应反应。createElement”JSX查找和消除需要一个动态属性。你可以找到在前端代码的编译版本。
然而,性能改进是最小的,你不会注意到差异,因为现代JavaScript引擎优化主要用于动态属性查找。
改变事件的代表团
反应在反应JS 17日JS将不再附加事件处理程序在文档级别。相反,它会将它们附加到根DOM容器将您的反应JS树呈现。
考虑附加一个onClick事件按钮反应JS像下面的例子:
在上面的代码中,JS等价,在编译时,会是这个样子:
JS反应然后高度一个处理程序/事件类型文档节点直接,而不是将它附加到最初宣布DOM节点。这就是所谓的事件委托。
在反应JS 17日,事件处理程序将不再是附加在文档级别,但是他们会被附加到DOM树呈现容器。
与这种变化反应JS 17日鸟巢现在安全应用程序构建具有不同反应JS版本。
打破更新变化
有一些新的突破与这个版本的变化。
浏览器看齐
JS的反应做出了一些更改相关事件系统:
- “onScroll”事件不再泡沫。
- “失去焦点事件”和“聚焦事件”事件已经转向使用本机内部“focusin”和“focusout”事件匹配现有的行为反应,并提供更多更好的信息。
- “onClickCapture”现在利用实际浏览器捕获阶段的听众。
没有事件池
事件池优化已被删除从这个新版本的反应JS由于持续混乱和缺乏性能改进。
升级效应清理时间
这个新版本也让“useEffect”钩清理函数时机更加一致。
在反应JS 16中,清理函数同步运行的影响。在反应JS 17,清理效果函数总是异步运行——例如,如果组件是被卸载,清理后运行屏幕已经更新。
最新的版本是明显重要
的JSX变换是向后兼容的改变是最小反应升级JS 17。尽管大多数的这些改进不可见的现实世界中,同样重要的是要明白这些改进将加快未来版本。升级到JS 17反应会使你的代码库未来的证明,你不需要提醒自己保持反应JS导入你的JSX文件。在这升级的更多信息,今天联系我们的技术专家。