首页 > 解决方案 > 如何在组件之外调度 redux 操作?

问题描述

redux在我的react-native移动应用程序中使用。
与后端的通信是通过使用socket.io.

我以一种方式组织项目,其中我有一个初始化套接字客户端的文件(您可以将其称为对象)。
处理程序已注册到它,我想将操作发送到reducers.

socket.js

export function createSocket (url) {
  console.log(`connecting to ${url}`)
  // dispatch(actions.CONNECT)
  return io(url)
}

我如何dispatch从 any 之外的这些功能中采取行动react component

标签: javascriptreactjsreact-nativeredux

解决方案


如果您在启动时初始化套接字客户端,只需将您的 redux 存储传递给函数,然后使用store.dispatch()

export function createSocket (url, store) {
  console.log(`connecting to ${url}`)
  store.dispatch(actions.CONNECT)
  return io(url)
}

如果不是在启动时,那么您的套接字创建应该由一些用户操作(或类似的东西)触发,在这种情况下,您应该能够使用redux-thunk中间件获取对调度函数的引用:

//the action returns a function, which gets called with store.dispatch as an argument
const myAction = someArg => dispatch => {
    createSocket(url, dispatch);
};

详见https://github.com/reduxjs/redux-thunk _


推荐阅读