reactjs isMounted
API的文档提到:
您可以使用此方法来保护对
setState()
或{的异步调用forceUpdate()
。
我的主要问题是应该通过拨打setState()
来保护对isMounted()
的呼叫1>?
在Initial AJAX Tutorial http://facebook.github.io/react/tips/initial-ajax.html中,XHR回调中使用的setState
使用isMounted()
后卫,但是这是必需的吗?
第二个问题是,如果需要,为什么会这样呢?看起来检查本身非常简单,并且可以内联到setState()
而没有任何显着的性能损失,但API使用量大大简化。
答案 0 :(得分:4)
逻辑上,如果在调用回调时可以卸载组件,则需要isMounted。
最佳做法是在componentWillUnmount中避免这种情况,例如中止ajax请求,取消超时或取消订阅事件。
可以说这样的api更简单,因为如果在不适当的时间调用它,setState不会无声地失败。无声地失败会导致许多难以追查的错误。