Facebook发布React v16.0,新旧浏览器都可以尝鲜! (Facebook发布产品)
整理分享Facebook发布React v16.0,新旧浏览器都可以尝鲜! (Facebook发布产品),希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:Facebook发布产品,Facebook发布时间是太平洋时间吗,Facebook发布技巧,Facebook发布技巧,Facebook发布的广告防止被扒,Facebook发布时间是太平洋时间吗,Facebook发布会,facebook发布文字内容不得超过多少字,内容如对您有帮助,希望把内容链接给更多的朋友!
在将来,我们可能会向JSX添加不需要密钥的特殊片段语法。 我们也添加了对返回字符串的支持: 更好的错误处理 以前,渲染过程中的运行时错误可能会使React处于断开状态,产生隐秘的错误消息,并需要页面刷新才能恢复。为了搞定这个问题,React运用了更有弹性的错误处理策略。默认情况下,如果组件的渲染或生命周期方式中抛出了错误,则会从根目录卸载整个组件树。这样可以防止显示*的数据。但是,这可能不是理想的用户体验。 每次发生错误时,不要卸载整个使用程序,你可以运用errorboundaries。errorboundaries是捕获子树内部错误的特殊组件,并显示一个备用UI。 Portals Portals提供了一流的方式来将子节点呈现到存在于父组件的DOM层次结构之外的DOM节点。 更好的服务器端渲染 React包括一个完全重写的服务器端渲染器。它可以很快的支持流,所以你可以更快地向客户端发送字节。而且,由于采用了一个新的封装策略来编译process.envcheck(在Node中读取process.env真的很慢),不再需要绑定React来获得良好的服务器呈现性能。 核心团队成员SashaAickin写了一篇不错的文章,描述了React的SSR改进。根据Sasha的综合基准测验,React中的服务器渲染速度大大高于React的三倍。当将React与proccess.env进行比较时,节点4的改进大约为2.4倍,节点6的性能提升了3倍,并且在新的Node8.4版本中全面提升了3.8倍,如果与React进行比较而没有编译,则React在最新版本的Node!的SSR中有一个完整的数量级增益。(正如Sasha指出的那样,这些数字是基于综合基准测验得出的,不代表现实世界中的表现。) 此外,React可以更好地在服务器端呈现HTML,它不再需要初始渲染与服务器的结果完全匹配。相反,它将尝试尽可能重用现有的DOM。没有更多的校验和!一般来说,不建议在客户端和服务器上呈现不一样的内容,但在某些情况下(例如时间戳)可能会有用。 支持自定义DOM属性 不是忽视无法识别的HTML和SVG属性,React现在可以将它们传递给DOM。这有额外的好处,允许程序员摆脱React的大多数属性白名单,从而减少文件大小。 减少文件大小 尽管补充了很多功能,但React实际上比.6.1更小!react为5.3kb(2.2kbgzipped),低于.7kb(6.9kbgzipped)。react-dom是.7kb(.6kbgzipped),低于kb(.9kbgzipped)。react+react-dom是kb(.8kbgzipped),低于.7kb(.8kbgzipped)。 相比之下,与之前的版本相比,这相当于减少%的大小(%的gzip)。 React现在运用Rollup为每种不一样的目标格式创建*,从而导致大小和运行时性能的优化。扁平*格式意味着,无论运用Webpack,Browserify,预制UMD*包还是任何其他*,React对*包大小的影响基本一致。 MIT许可 React可以在MIT许可证下运用。 新的核心架构 React是React的第一个版本,建立在新的核心架构之上,代号为“Fiber”。用户可以在Facebook的博客上阅读有关此项目的所有内容。此外,该团队正在进行异步渲染研究-通过定期向浏览器执行协同调度渲染工作的策略。结果表明,运用异步呈现使用程序更加灵敏,因为React避免阻塞主线程。 Facebbok认为这代表了React的未来。为了尽可能平滑地迁移到v.0,这一版还没有启用任何异步功能,但是Facebook可能在未来几个月内推出。 安装 Reactv.0.0在npm注册表中可用。 要运用Yarn安装React,请运行: 要运用npm安装React,请运行: 我们还通过CDN提供了React的UMD版本: 升级 虽然React包含了许多重大变化,但在升级方面,可以像任何其他主要的React版本一样。自从今年早些时候起,我们一直为Facebook和Messenger*用户提供React,并且发布了几个测验版和候选版本来排除其他问题。除了少数例外,如果使用程序在.6运行时没有任何警告,它应该可以运行.0。 新的弃用 如果你在恢复服务器呈现的HTML,请运用ReactDOM.hydrate而不是ReactDOM.render。如果只是在进行客户端渲染,请继续运用ReactDOM.render。 突破变化 React包括一些小的突破性变化。这些只会影响不常见的用例,不会*大多数使用程序。对于运用unstable_handleError的errorboundaries进行了有限的无证支持。此方式已重命名为componentDidCatch,可以运用codemod自动迁移到新的API。 ReactDOM.render和ReactDOM.unstable_renderIntoContainer现在从生命周期方式内部调用时返回null。要搞定这个问题,可以运用Portals。setState:运用null指定setState不再触发更新。如果要重新渲染,允许在更新功能中进行决定。直接在渲染中调用setState会导致更新,不应该从render调用setState。setState回调(第二个参数)现在立即在componentComponentDidMount/componentDidUpdate之后启动,而不是在所有组件呈现之后。 当运用替换时,B*ponentWillMount总是在A*ponentWillUnmount之前发生。 componentDidUpdate生命周期不再接收prevContext参数。 由于DOM引用不可用,简单的渲染器不再调用componentDidUpdate。这也使得它与componentDidMount(在以前的版本中也不会被调用)一致。浅渲染器不再执行unstable_batchedUpdate。 现在,即使在CommonJS环境中,React和ReactDOM也可以预编译为单个文件(“flatbundles”)。所有兼容插件在npm上单独发布,如果需要,它们具有单文件浏览器版本。单文件浏览器构建的名称和路径已更改,以强调开发和生产构建之间的分别。例如: JavaScript环境要求 React依赖于Map和Set的*类型。如果支持旧的浏览器和可能尚未提供这些原始浏览器的设备(例如IE<),请考虑在*的使用程序中包括例如core-js或babel-polyfill。 运用core-js支持旧版浏览器的React的多重填充环境可能如下所示: React也取决于requestAnimationFrame(即使在测验环境中)。用于测验环境的简单示例是: