Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS+;通量:在组件之间路由时收到两次操作_Javascript_Reactjs_React Router_Flux - Fatal编程技术网

Javascript ReactJS+;通量:在组件之间路由时收到两次操作

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”消息在每次单击时显示两次)。如果我再次路由到表和板,

我用React、Router和Flux制作的小应用程序工作。
我有两条路线:

<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")
    })

  }