我通读了https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#fetching-external-data-when-props-change。我仍然无法理解为什么他们必须弃用 componentWillReceiveProps。
在 componentWillReceiveProps 中进行 ajax 调用有什么危害?一旦 ajax 调用返回值,我就会更新状态从而重新渲染组件。
为什么不推荐使用 componentWillReceiveProps?
IT技术
reactjs
2021-04-01 13:10:03
2个回答
componentWillReceiveProps
是一个同步钩子。调用异步函数(如在此钩子内获取数据)将需要在设置新props和数据加载完成之间进行渲染。
但它getDerivedStateFromProps
是一个异步钩子,不需要任何额外的渲染。因此,componentWillReceiveProps
由于以下原因而被弃用:
- 使用 getDerivedStateFromProps
- 或者,使用 componentDidUpdate
这不会给你不必要的渲染。请注意,getDerivedStateFromProps
它仅在极少数情况下使用。所以,我建议你尽量使用componentDidUpdate
hook。
比较 componentWillMount 和 componentDidMount 时会发生类似的事情。每当您需要操作异步操作并在任何情况下忘记 componentWillMount 时,请使用 componentDidMount。关于 componentDidMount 的更多解释在我的另一篇文章中。
我的理解是,如果componentWillReceiveProps()
正在调用该方法,则组件的某些属性已更改,并且应该通知该组件并可能再次重新渲染。
在内部进行 ajax 调用componentWillReceiveProps()
可能会破坏该流程。
我的直觉是,我们被温和地引导到组件外部进行 ajax 调用,并通过属性传递这些 ajax 调用的所有结果。它使您的组件非常干净且可测试。
其它你可能感兴趣的问题