Зачем реагировать JS перехватывает websocket на состояние сброса сообщения? - PullRequest
0 голосов
/ 14 июля 2020

Мне сложно использовать веб-сокет в ReactJS.

Я следил за этим решением: { ссылка }

Это решение работает очень хорошо!

Однако мне интересно, почему onmessage используется useEffect.

Я пробовал onmessage в useEffect с [], который является componentDidMount. Эти результаты сбрасывают мои состояния, но не запускают функцию с самого начала, потому что useEffect с [] в этом случае не запускался.

Итак, мой вопрос:

  1. Разница между put onmessage в useEffect с [] или просто в useEffect.
  2. Необходимость useRef в react Hooks websocket (я пробовал оба способа, и на сетевой консоли он выглядит примерно так же.) - Я знаю, что useRef предотвращает создание websocket при каждом повторном вызове. рендеринг.

Я воткнул этот вопрос на весь день. :( Помогите, пожалуйста.

Большое спасибо!

1 Ответ

1 голос
/ 14 июля 2020
  1. useEffect без зависимостей будет запускаться каждый рендер. Поскольку вам нужно оформить подписку только один раз, она должна быть с пустыми порядками [].
  2. В вашем примере useRef используется только для приостановки прослушивания сообщений через веб-сокет. Если вам не нужен этот logi c, вы можете не использовать его.
...