当我收到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
答案 0 :(得分:0)
我不知道您的实现,但是我假设您有一些连接的React组件,您可以在其中连接套接字。您需要调度_ioDispatch(payload),使其到达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)
});