React JS componentWillUnmount仅有时被调用

时间:2015-07-11 11:38:54

标签: reactjs

每次发出新请求时,有没有办法调用componentWillUnmount? 现在,它有时只被调用。当我刷新浏览器时,它甚至都没有被调用。

情况:

我有一个喜欢/不喜欢的模块就像堆栈溢出一样。最初,每次用户点击喜欢或不喜欢时,我都会发送一个ajax请求。因为这太慢了,而且因为我不得不禁用按钮来防止重复,所以我决定做一个乐观的更新。基本上,我只是在用户点击喜欢或不喜欢时更新状态,并在componentWillUnmount方法期间发送ajax请求。如果它没有被召唤,那么所有喜欢和不喜欢的东西都会消失:(

2 个答案:

答案 0 :(得分:0)

你不需要componentWillUnmount。如果你在反应中使用Flux,那很简单:当商店通知组件它已经改变时(在发出Ajax请求之后),你可以询问商店是否成功通过了更新。如果它没有,您可以回滚乐观更新。你在使用Flux吗?

答案 1 :(得分:0)

在更新状态之前,您可以检查当前状态。如果用户已经点击了喜欢或不喜欢,请不要发送ajax请求。否则,发送ajax请求。

我观察到每次调用componentWillMount和componentDidMount,但是在卸载时不会立即调用componentWillUnmount。因此,两个或多个相同类型的反应类实例绑定到同一个dom对象,我遇到了问题。 componentWillUnmount稍后将作为批量清理所有绑定对象的方式调用。我正在使用反应0.14.2。