У меня есть точки на карте, эти точки я могу отправлять обновления, я использую веб-сокеты для получения обновлений.
В качестве модуля для реакции js Я использую socket.io-client
.
Я могу подключиться, я могу получать обновления от этих точек, то есть, если точка меняет свое состояние, я получаю ее информацию только с новым состоянием.
Проблема в том, что внутри функции, которую я использую для получать обновления Я не вижу состояние, то есть я вижу состояние, как оно было во время подключения.
Я также пытался использовать Redux, я сделал один редуктор с действиями, но когда внутри функция, которую я пытаюсь увидеть, что возвращает useSelector
, я нахожу себя пустым массивом, то есть состоянием, которое было у редукторов в момент перед подключением.
Я перепробовал их все, я не в состоянии найти решение, можете ли вы дать мне несколько советов?
Ex код:
import React from "react";
import io from 'socket.io-client';
const wsUrl = '..';
const socket = io(wsUrl, {
query: { token: jwtService.getAccessToken() }
});
export default function App() {
const { par } = useSelector(({ marker }) => marker);
const [state, setState] = React.useState({
parking: []
});
React.useEffect(() => {
getArea(); //Change par and parking
socket
.on('connect', () => {
console.log('Connected');
})
.on('ps_update', function(update) { // update =>
console.log('onPsUpdate', update, par, parking)
})
.on('error', err => {
console.error('error', err);
});
return () => {
if (socket) {
console.log('disconnecting socket');
socket.disconnect();
}
};
}, []);
return (
<div className="App">
</div>
);
}