Redux呼叫从Socketio事件调度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redux呼叫从Socketio事件调度相关的知识,希望对你有一定的参考价值。
当我收到socket.io事件时,我正试图在我的操作中调用一个调度。
AppActions.js:
export const _ioDispatch = (data) => (dispatch, getState ) => {
console.log("_ioDispatch")
dispatch(data);
}
socket.on('item created', function(payload){
console.log("socket on item created")
_ioDispatch(payload);
});
我得到控制台日志“创建项目的套接字”,但控制台日志“_ioDispatch”和调度永远不会被调用。任何建议将不胜感激。 TIA
答案
我不知道你的实现,但我会假设你有一些连接你的套接字的React组件。你需要的是派遣_ioDispatch(有效载荷),以便它到达redux
和redux-thunk
(或你使用的任何一个)中间件。像这样的东西:
import React from 'react';
import { connect } from 'react-redux';
class MyComponent extends React.component {
constructor(props) {
//create socket and do stuff here..
socket.on('item created', function(payload){
console.log("socket on item created")
props.socketCallback(payload);
});
}
}
const mapDispatchToProps = (dispatch) => ({
socketCallback: (payload) => dispatch(_ioDispatch(payload))
});
export default connect(null, mapDispatchToProps)(MyComponent);
顺便说一句,如果您的_ioDispatch函数与您描述的一样:
export const _ioDispatch = (data) => (dispatch, getState ) => {
console.log("_ioDispatch")
dispatch(data);
}
然后你可以简单地删除它并将mapDispatchToProps更改为:
const mapDispatchToProps = (dispatch) => ({
socketCallback: (payload) => dispatch(payload)
});
以上是关于Redux呼叫从Socketio事件调度的主要内容,如果未能解决你的问题,请参考以下文章
从 react-native-router-flux 事件调度操作到 redux
无法使用带有 redux-toolkit 的 socketIO 获取对象内函数的值