Javascript ReactJS+;通量:在组件之间路由时收到两次操作
我用React、Router和Flux制作的小应用程序工作。Javascript ReactJS+;通量:在组件之间路由时收到两次操作,javascript,reactjs,react-router,flux,Javascript,Reactjs,React Router,Flux,我用React、Router和Flux制作的小应用程序工作。 我有两条路线: <Route path="/" exact component={Board} /> <Route path="/table" component={Table} /> 一切正常,但当我路由到表组件,然后返回到板和火一键在卡应用程序崩溃。我发现董事会“两次”监听此“cardClicked”事件(此“received click action”消息在每次单击时显示两次)。如果我再次路由到表和板,
我有两条路线:
<Route path="/" exact component={Board} />
<Route path="/table" component={Table} />
一切正常,但当我路由到表组件,然后返回到板和火一键在卡应用程序崩溃。我发现董事会“两次”监听此“cardClicked”事件(此“received click action”消息在每次单击时显示两次)。如果我再次路由到表和板,消息会出现三次,以此类推,好像每次板组件装载时,它都会添加另一个“函数”来侦听“cardClicked”事件
如何预防?是否有一些函数可以使组件在卸载时停止侦听此事件,然后在装载时再次开始侦听 当组件装载时,您正在添加侦听器,但您永远不会删除它。每次装载此组件时,它都将运行其
componentWillMount
方法,添加一个新的侦听器。代码中的任何内容都不会删除它们,因此它们会累积是有意义的
您可以使用“componentWillUnmount”生命周期方法删除事件侦听器,这将解决多个事件的问题。也就是说,我不明白为什么这会导致任何类型的崩溃,因此您很可能还有另一个未发现的问题。在
组件willunmount
方法中删除事件侦听器?您使用的是v4.0.7吗?
//Board.js:
componentWillMount() {
GameStore.on("cardClicked", () => {
console.log("received click action")
})
}