Я пытаюсь создать простое промежуточное ПО для обработки событий сокетов.
const join = (channel) => (dispatch) => {
dispatch({
type: 'ACTION-1',
socketChannel: {...},
events: [...],
});
};
Я отправляю это действие, которое вызывает его. И теперь, когда метод отправки был вызван в моем промежуточном программном обеспечении с типом «ACTION-2» и получил socketData в качестве полезной нагрузки, я вижу в своей консоли, что «ACTION-1» был запущен дважды, и в последний раз он пришел с моим socketData полезная нагрузка.
Интересно, почему «ACTION-1» был зарегистрирован вместо «ACTION-2» и как я могу это исправить? Буду признателен за вашу помощь.
import { socket } from 'services/socket';
const socketMiddleware = ({ dispatch }) => next => (action) => {
const {
channel,
events, // an array of events for the channel
...rest
} = action;
if (typeof action === 'function' || !channel) {
return next(action);
}
const {
type,
name,
} = channel;
const channelInstance = socket.instance[type](name);
events.forEach((event) => {
const handleEvent = (socketData) => {
dispatch({ type: 'ACTION-2', socketData, ...rest });
};
channelInstance.listen(event.name, handleEvent);
});
return next(action);
};
export {
socketMiddleware
};