javascript - 如何在组件之外调度 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
?
解决方案
如果您在启动时初始化套接字客户端,只需将您的 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);
};
推荐阅读
- unix - 在 Solaris 中为用户添加多个“辅助组”的命令
- python - 提取长字符串之间的值
- c++ - 启用中断时 QEMU 三重故障
- python - 数据透视表排序熊猫
- html - 垂直伸缩容器中的粘页脚的各种问题
- apache-flex - 如何使用 Flash builder 创建 64 位桌面应用程序 (AIR)
- javascript - 如何在 fetch catch 中返回离线文件的内容?
- node.js - 安装 Angular 材料导致近 600 个漏洞审计结果
- python - 如何使用 python 3 拆分列表?
- c++ - 为字符串中的每个字符(不是字符位置!)分配唯一索引