我有一个项目,其中nodejs服务器通过socket.io将推送事件传递到反应仪表板,我正在使用Redux。当收到新数据时,会触发一个动作来更新所有相关组件,虽然我不确定我这样做的方式是正确的。
这是我监控来自服务器的新传入数据的方法:
socket.on('incidents', state => {
boundActionSetIncidentsList(state);
});
这是在新数据上调用的有界动作创建者:
import { store } from '../index';
export function boundActionSetIncidentsList(incidents) {
store.dispatch(actionSetIncidentsList(incidents));
}
我需要商店才能发送操作,因为您可以看到我残酷地从主index.js
导入它。这就是它的创建方式:
export const store = createStore();
作为反应和redux的新手,我想知道什么是不是从容器或表示组件触发的调度操作的redux方式。谢谢!!
答案 0 :(得分:2)
您可以将设置套接字侦听器的代码包装为将存储作为参数的函数。因此,至少您的客户端主程序可以设置存储,并在准备就绪时将其传递给套接字侦听器。
您也可以尝试使用库来提供帮助。这是一些redux中间件,它可以在服务器发送数据时自动将操作分配到存储中:
答案 1 :(得分:2)
一般建议是在Redux中间件(可以访问商店的dispatch
方法)或在组件装载/卸载时处理套接字的React组件中管理套接字连接并且可以使用React-Redux connect
函数来访问dispatch
(或预绑定动作创建器以用于套接字事件)。