Проблема с доступом к установочному штату Redux в обработчиках событийJavascript

Форум по Javascript
Anonymous
Проблема с доступом к установочному штату Redux в обработчиках событий

Сообщение Anonymous »

У меня есть сервер SignalR (WebSocket) для игры и клиент React/Redux, который подключается к нему. У меня есть компонент, задача которой состоит в том, чтобы прослушать сообщения SignalR для их обработки, что обычно предполагает обновление чего -либо в состоянии Redux. Одно из моих сообщений, однако, называется «BattleVents», и это сообщение на самом деле представляет собой несколько событий, упакованных в одно сообщение. Когда я получаю это, я просто прохожу каждое событие в сообщении и вызываю его соответствующую функцию обработчика. Это минимальный пример этого компонента: < /p>

Код: Выделить всё

function BattleEventListener({
roomId
}: BattleEventListenerProps) {
const dispatch = useDispatch();
const roomState = useSelector((state: RootState) => state.rooms.byId[roomId]);
const roomRef = useRef(roomState);

useEffect(() => {
if (gameHub.hub === null) return;
console.info("Connecting room to gameHub.");

gameHub.hub.on('BattleEvents', handleBattleEvents);

return () => {
gameHub.hub?.off('BattleEvents', handleBattleEvents);
}
}, [dispatch, gameHub.hub, roomRef.current]);

useEffect(() => {
roomRef.current = roomState;
}, [roomState]);

return null;

async function handleBattleEvents (evtId: string, roomId: string, events: BattleEvent[]) {
console.debug('

Подробнее здесь: [url]https://stackoverflow.com/questions/79694840/problem-with-accessing-stale-redux-state-in-event-handlers[/url]

Вернуться в «Javascript»