이 REDUX 인프라 socket.io의에 전환을 위해 사용할 수있는 몇 가지 전략이있다 :
첫째, 둘째 예를 https://www.npmjs.com/package/redux-socket.io
을위한 미들웨어의 형태로 준비 결정이,있다, 더 간단한 교활한 행동이 가능합니다. redux store와 saga가 생성되는 순간 socket.io에 필요한 클라이언트 인스턴스를 만들고 동시에 함수 클로저의 논리를 만들 수 있습니다.
다음 예는 귀하의 사례를 완전히 커버합니다. 단지 MESSAGES_MAP
맵을 Redux 작업에 매핑되어야하는 이벤트 이름으로 설정하십시오.
import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware, compose } from 'redux';
import socketIO from 'socket.io-client';
import YourRootContainter from './YourRootContainter';
const MESSAGES_MAP = {
'MESSAGE_1': 'REDUX_ACTION_1',
'MESSAGE_2': 'REDUX_ACTION_2'
};
Promise.resolve(createSagaMiddleware()).then(saga => ({
store: (compose(applyMiddleware(saga))(createStore))(
YOUR_REDUCER,
YOUR_INITIAL_STATE
),
socketClient: socketIO(YOUR_SOCKET_URL, {
path: YOUR_EXCHANGE_URL_PATH
}),
saga
})).then(({ saga, store, socketClient }) => (
Object.keys(MESSAGES_MAP).forEach(name => (
socketClient.on(name, event => store.dispatch({
type: MESSAGES_MAP[name],
payload: { ...event }
}))
)),
saga.run(YOUR_SAGA_ENTRY_POINT),
store
)).then(store => render(
(<Provider store={store}>
<YourRootContainter />
</Provider>),
document.getElementById('root')
));
Welcome to Stackoverflow! 여기에서 훌륭한 답변을 얻을 수 있지만 지금까지 시도한 내용에 대해 더 자세히 알려주십시오. 무엇보다 중요한 것은 여기에 몇 개의 코드를 링크 (가급적이면 바이올린/빈/펜)로 연결하는 것입니다. – Alp