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