#REact 为什么是isMounted()反模式,正确的解决方案是什么?
主要的用例isMounted()是避免setState()在组件卸载后调用,因为它会发出警告。
if (this.isMounted()) {
this.setState({...})
}
isMounted()在呼叫之前进行检查setState()确实可以消除警告,但同时也违反了警告的目的。使用isMounted()是一种代码味道,因为您要检查的唯一原因是因为您认为在卸载组件后可能持有引用。
最佳解决方案是在setState()卸载组件后找到可能要调用的位置并进行修复。当组件正在等待某些数据并在数据到达之前将其卸载时,此类情况通常是由于回调而发生的。理想情况下,componentWillUnmount()卸载前应在中取消所有回调。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。