reactjs isMounted
API的文档提到:
我的主要问题是,何时应在调用setState()
的情况下对isMounted()
进行调用?
在Initial AJAX Tutorial http://facebook.github.io/react/tips/initial-ajax.html中,XHR回调中使用的setState
使用isMounted()
保护器,但这是必需的吗?
第二个问题是,如果需要的话,为什么会这样呢?看来检查本身非常简单,可以内联到setState()
中,而不会造成任何明显的性能损失,但是大大简化了API的使用。
最佳答案
从逻辑上讲,如果在调用回调时可以卸载组件,则需要isMounted。
最佳做法是在componentWillUnmount中避免这种情况,例如中止ajax请求,取消超时或取消订阅事件。
可以说,这种api更简单,因为如果在不适当的时间调用setState,它不会默默地失败。静默地失败会导致许多难以跟踪的错误。
关于ReactJS:什么时候应该由isMounted保护setState?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26821165/