我想off从socket.io客户端制作方法,以从所有React组件中删除所有匹配运行的侦听器,因为当前我正在侦听两个不同组件上的同一事件,两者都位于componentDidMount中,
Board.js
socket.on('achievement', (data) => {
const updateAchievement= [data, ...this.state.getAchievements];
this.setState({
recentAchievements: this.state.recentAchievements.concat(data),
getAchievements: updateAchievement
});
});
Run Code Online (Sandbox Code Playgroud)
Dashboard.js
socket.on('achievement', (data) => {
const updateAchievement= [data, ...this.state.getAchievements];
this.setState({
recentAchievements: this.state.recentAchievements.concat(data),
getAchievements: updateAchievement
});
});
Run Code Online (Sandbox Code Playgroud)
当前,如果最终用户在DashBoard.js上关闭监听事件,那么Board.js仍在积极接收我不需要的数据。board.js组件始终在视图上,这就是为什么我仍然可以看到数据的原因。
我如何退订
DashBoard.js
componentWillUnmount(){
socket.off("achievement");
}
Run Code Online (Sandbox Code Playgroud)
就像我上面说的,董事会组件始终在视图中,我仍然可以看到传入的数据。
我该如何阻止呢?