gpt4 book ai didi

javascript - Redux 和 Socket IO 代理错误

转载 作者:行者123 更新时间:2023-12-01 02:25:12 25 4
gpt4 key购买 nike

我正在使用以下插件来管理 Redux 中的 Socket IO 实例:

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

只有在用户登录后,我才需要能够初始化套接字。该插件在文档中建议在设置商店时设置套接字实例:

import { createStore, applyMiddleware } from 'redux';
import createSocketIoMiddleware from 'redux-socket.io';
import io from 'socket.io-client';

let socket = io('http://localhost:3000');
let socketIoMiddleware = createSocketIoMiddleware(socket, "server/");

function reducer(state = {}, action){
switch(action.type){
case 'message':
return Object.assign({}, {message:action.data});
default:
return state;
}
}

let store = applyMiddleware(socketIoMiddleware)(createStore)(reducer);

store.subscribe(()=>{
console.log('new client state', store.getState());
});
store.dispatch({type:'server/hello', data:'Hello!'});

由于我无法在设置商店的同时设置实例,因此我需要找到一种稍后设置的方法。我在 redux-socket.io issues 中找到了这个解决方案:

https://github.com/itaylor/redux-socket.io/issues/13#issuecomment-256095866

看起来是一个完美的解决方案,所以我用我当前的商店设置实现了它:

import {applyMiddleware,createStore} from 'redux';
import rootReducer from './reducers/___index';
import thunk from 'redux-thunk';

let socketIoMiddleware = null;
const proxyMiddleware = store => next => action => {
if (socketIoMiddleWare !== null) {
return socketIoMiddleware(store)(next)(action);
}
return next(action);
}

const middlewares = [proxyMiddleware, thunk];
const store = createStore(rootReducer,applyMiddleware(...middlewares));

商店渲染得很好,没有错误,但是当我尝试通过单击按钮来更改商店状态中的任何内容时,例如,我收到以下错误:

socketIoMiddleWare is not defined

我在 redux-socket.io 存储库中找到的上述解决方案似乎对其他人有效,因此我不完全确定为什么会出现此错误。

如有任何建议,我们将不胜感激!

最佳答案

这里 if(socketIoMiddleWare !== null) { 应该是 socketIoMiddleware。看起来像是打字错误

关于javascript - Redux 和 Socket IO 代理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48874960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com