调用具有副作用的componentWillReceiveProps()是否安全

时间:2017-11-19 22:22:03

标签: reactjs

在React的componentWillReceiveProps函数中,如果我检查道具是否先改变了,那么可以进行AJAX调用吗?看来这个函数可能会在React Fiber(后16 beta)中被多次调用,而这个博客(https://medium.com/@baphemot/understanding-reactjs-component-life-cycle-823a640b3e8d)表明不应该执行任何副作用。但是,我没有在React文档中看到这样的警告,并且我认为仅当道具改变了那样才能进行AJAX调用。

2 个答案:

答案 0 :(得分:2)

根据最新的(React 16.3+)文档,这被认为是不安全的,并回答了您的确切查询:

  

使用这种生命周期方法通常会导致错误和不一致,   因此,将来会不推荐使用。

     

如果您需要执行副作用(例如,数据获取或   动画)以响应道具更改,请使用componentDidUpdate   生命周期。

答案 1 :(得分:0)

在OnWillReceiveProps中拨打电话是可以的,但是由你来定义一个有意义的条件,如果你的条件很好,你就不应该拨打很多电话。无论如何,你应该在大多数情况下避免使用OnWillReceiveProps,这在性能方面是贪婪的