Хук состояния реакции не обновляется в обратном вызове сокета io - PullRequest
2 голосов
/ 18 апреля 2020

Я пытаюсь обновить мой totalMembers в обратном вызове socket-io. Но состояние не меняется от своего начального значения.

Я хочу выдавать 'join' только при изменении пользователя. Когда я добавляю totalMembers для использования зависимости эффекта, это прерывает мое приложение. Потому что я изменяю свою ценность в будущем.

const [totalMembers, setTotalMembers] = useState(1);

useEffect(() => {
  if (user) {
    socket.emit("join", user, (err, total) => {     // total === 4
      if (err) {
        // ...
      }
      if (total) {
        console.log(total);             //  > 4
        setTotalMembers(total);

        setTimeout(() => {
          console.log(totalMembers);    //  > 1
        }, 2000);
      }
    });
  }
}, [user]);
...