1

我已经开始使用 Flux 和 react-router 开发应用程序。我的一个组件使用从 Flux 商店获得的状态进行填充。这工作正常。但是,当我使用 react-router 离开这个组件然后再次返回时,我得到了上述错误。如果我刷新页面,错误就会消失,页面工作正常。

根据我对此的理解,react-router 似乎没有重新安装此组件,因此它试图更改未安装组件的状态,因此出现错误。

如果这是正确的,我如何让 react-router 重新安装组件?

PS。此代码太长,无法在此处发布。它已发布在 Github 上,但由于问题已经解决,现在该帖子已被删除。更新(感谢肖恩):

该应用程序可以使用 dist 文件夹运行,只需将此文件夹复制到网络服务器并将浏览器指向该文件夹(我在本地使用 xampp)。问题出在周页面上(组件 TableWeekly 运行此表)。使用下拉菜单更改讲师的视图会出现问题。首次加载或刷新后工作正常,但当您导航到另一个页面并再次返回时失败。

4

1 回答 1

0

您的问题是您订阅了更改事件componentDidMount,但从不取消订阅componentWillUnmount。换句话说,每次TableWeekly安装组件时,都会附加一个新的事件处理程序,但在卸载该组件时不会分离。

MainStore发出一个 change 事件时,它会调用_onChange一个未挂载的组件上的事件处理程序,这反过来会尝试更新状态并产生一个不变的错误。

要解决此问题,请将以下componentWillUnmount方法添加到您的TableWeeklyDropdownWeekly

componentWillUnmount: function() {
    MainStore.removeChangeListener(this._onChange);
}
于 2015-03-13T07:49:55.603 回答