ReactJS:什么时候应该通过isMounted保护setState?

时间:2014-11-08 19:28:29

标签: reactjs

reactjs isMounted API的文档提到:

  

您可以使用此方法来保护对setState()或{的异步调用   forceUpdate()

我的主要问题是应该通过拨打setState()来保护对isMounted()的呼叫

Initial AJAX Tutorial http://facebook.github.io/react/tips/initial-ajax.html中,XHR回调中使用的setState使用isMounted()后卫,但是这是必需的吗?

第二个问题是,如果需要,为什么会这样呢?看起来检查本身非常简单,并且可以内联到setState()而没有任何显着的性能损失,但API使用量大大简化。

1 个答案:

答案 0 :(得分:4)

逻辑上,如果在调用回调时可以卸载组件,则需要isMounted。

最佳做法是在componentWillUnmount中避免这种情况,例如中止ajax请求,取消超时或取消订阅事件。

可以说这样的api更简单,因为如果在不适当的时间调用它,setState不会无声地失败。无声地失败会导致许多难以追查的错误。