使用Redux调度与组件无关的操作的正确方法是什么?

Sla*_*ast 8 reactjs redux

我有一个项目,其中nodejs服务器通过socket.io将推送事件传递到反应仪表板,我正在使用Redux.当收到新数据时,会触发一个动作来更新所有相关组件,虽然我不确定我这样做的方式是正确的.

这是我监视来自服务器的新传入数据的方法:

  socket.on('incidents', state => {
    boundActionSetIncidentsList(state);
  });
Run Code Online (Sandbox Code Playgroud)

这是在新数据上调用的有界动作创建者:

  import { store } from '../index';

  export function boundActionSetIncidentsList(incidents) {
    store.dispatch(actionSetIncidentsList(incidents));
  }
Run Code Online (Sandbox Code Playgroud)

我需要商店才能发送动作,因为你可以看到我从主要的地方粗暴地导入它index.js.这就是它的创建方式:

  export const store = createStore();
Run Code Online (Sandbox Code Playgroud)

作为反应和redux的新手,我想知道什么是不是从容器或表示组件触发的调度操作的redux-way方式.谢谢!!

Bra*_*don 2

您可以包装代码,将套接字侦听器设置为一个将存储作为参数的函数。因此,至少您的客户端主例程可以设置存储并在准备就绪时将其传递给套接字侦听器。

您也可以尝试使用图书馆来提供帮助。这是一些 redux 中间件,可以在服务器发送数据时自动将操作分派到存储中:

https://github.com/itaylor/redux-socket.io