我正在尝试在卸载/重用React组件时取消承诺。现在我正面临一个问题,我可以在下面的小图中更好地解释:
** Promise必须完成(执行AJAX请求并相应地更新redux存储)
创建组件=> Mounted => _onClick()fired =>承诺开始=>组件已卸载但已被回收=>承诺完成=>在循环的组件中调用setState()并从前一个组件中以错误的状态重新渲染。
如何取消/中断/停止下一个'然后'但仍然执行承诺?
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
答案 0 :(得分:-1)
我在这里做的只是为设置状态的承诺的主体添加一个条件。您可以使用React的生命周期钩子来跟踪元素当前是否在DOM中。
这是一个跟踪是否已安装的组件的快速示例:
class Test extends React.Component {
render() {
return (<p>hello</p>);
}
componentDidMount () {
this.mounted = true
console.log(`mounted: ${this.mounted}`)
}
componentWillUnmount () {
this.mounted = false
console.log(`mounted: ${this.mounted}`)
}
}
实例:https://codepen.io/jenius/pen/MmjPJV
基于此,你应该能够在你的promise处理程序中添加一个简单的if / else来解决你的问题!