小编hey*_*101的帖子

Socket.io不会从每个React组件中删除侦听器

我想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)

就像我上面说的,董事会组件始终在视图中,我仍然可以看到传入的数据。

我该如何阻止呢?

javascript socket.io reactjs

4
推荐指数
1
解决办法
1212
查看次数

标签 统计

javascript ×1

reactjs ×1

socket.io ×1