Reactjs React路由器不变冲突:replaceState(…)错误

Reactjs React路由器不变冲突:replaceState(…)错误,reactjs,react-router,Reactjs,React Router,我已经开始使用Flux和react路由器开发应用程序。我的一个组件使用从通量存储获得的状态填充。这个很好用。然而,当我使用react router离开这个组件,然后再次返回时,我得到了上面的错误。如果我刷新页面,错误就会消失,页面工作正常 从我的理解来看,react router似乎没有重新安装此组件,因此它试图更改未安装组件的状态,因此出现错误 如果这是正确的,我如何让react路由器重新安装组件 另外,这篇文章的代码太长,无法在这里发布。它发布在Github上,但由于问题已经解决,现在文章已

我已经开始使用Flux和react路由器开发应用程序。我的一个组件使用从通量存储获得的状态填充。这个很好用。然而,当我使用react router离开这个组件,然后再次返回时,我得到了上面的错误。如果我刷新页面,错误就会消失,页面工作正常

从我的理解来看,react router似乎没有重新安装此组件,因此它试图更改未安装组件的状态,因此出现错误

如果这是正确的,我如何让react路由器重新安装组件

另外,这篇文章的代码太长,无法在这里发布。它发布在Github上,但由于问题已经解决,现在文章已经被删除。 更新(谢谢肖恩):


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

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

MainStore
发出更改事件时,它将调用未安装组件上的
\onChange
事件处理程序,这反过来将尝试更新状态并产生不变错误

要解决此问题,请将以下
组件willunmount
方法添加到
TableWeekly
DropdownWeekly

componentWillUnmount:function(){
removeChangeListener(this.\u onChange);
}

您可能需要提供更多信息。例如,这发生在哪个页面上,如何运行代码,等等?人们不会只是在找到bug之前就开始仔细阅读你的代码。需要更多的细节。