React js перехватывает обновление события websocket с элементом return change, который я не вижу внутри функции - PullRequest
0 голосов
/ 24 марта 2020

У меня есть точки на карте, эти точки я могу отправлять обновления, я использую веб-сокеты для получения обновлений.

В качестве модуля для реакции 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>
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...