一年多来,React 团队一直致力于实现异步渲染。上个月,在JSConf Iceland的演讲中,Dan公布了一些令人兴奋的异步渲染解锁新的可能性。现在,我们想与您分享我们在开发这些功能时学到的一些经验教训,以及一些有助于在组件启动时为异步呈现做好准备的配方。

我们学到的最大教训之一是,我们的一些遗留组件生命周期往往会鼓励不安全的编码实践。它们是:

  • componentWillMount
  • componentWillReceiveProps
  • componentWillUpdate

这些生命周期方法经常被误解和巧妙地误用。此外,我们预计它们的潜在误用可能会在异步呈现中出现更多问题。

因此,我们将在即将发布的版本中向这些生命周期添加"UNSAFE_"前缀。(在这里,"不安全"不是指安全性,而是表示使用这些生命周期的代码在 React 的未来版本中更有可能出现 bug,尤其是在启用异步渲染之后。

渐进迁移路径 React 遵循语义版本控制,因此此更改将是渐进的。我们目前的计划是:

  • 16.3:为不安全的生命周期引入别名,UNSAFE_componentWillMountUNSAFE_componentWillReceivePropsUNSAFE_componentWillUpdate 。(旧生命周期名称和新别名在此版本中均有效。
  • 未来的 16.x 版本:为 componentWillMountcomponentWillReceivePropscomponentWillUpdate 启用弃用警告。(旧生命周期名称和新别名在此版本中均有效,但旧名称将记录 DEV 模式警告。
  • 17.0: 删除 componentWillMountcomponentWillReceivePropscomponentWillUpdate 。(从那时起,只有新的"UNSAFE_"生命周期名称才能正常工作。

请注意,如果您是 React 应用程序开发人员,则不必对旧方法执行任何操作。即将发布的版本 16.3 版本的主要目的是使开源项目维护人员能够在出现任何弃用警告之前更新其库。在将来的 16.x 版本之前,不会启用这些警告。

我们在 Facebook 维护了超过 50,000 个 React 组件,我们不打算立即重写它们。我们理解迁移需要时间。我们将与 React 社区中的每个人一起走渐进式迁移路径。 如果您没有时间迁移或测试这些组件,我们建议您运行"codemod"脚本来自动重命名它们:

cd your_project
npx react-codemod rename-unsafe-lifecycles

引用原文

标签: 代码, 功能, 组件, 原文, 版本, 别名, 操作, 程序, 语义, 模式, 异步, 目的, 开发, 路径, react, 周期

知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

评论暂时关闭了,可以过段时间再试

  • 目录