сообщения. При монтировании подключает сокет и подписывается на сообщения, складывая их в стейт.
Проблема в том, что отображается только последнее сообщение, что в общем-то закономерно, т.к. из-за того, что эффект вызывается только один раз, внутри эффекта arr всегда будет пустым. Но зависимости просто так не добавить, ибо подключаться и подписываться он должен только один раз.
Как бы это поизящнее обойти?
const Log = () => {
const [arr, setArr] = useState([]);
useEffect(() => {
const sock = io(...);
sock.on('msg', (item) => setArr(arr.concat(item)));
return () => sock.disconnect();
}, []);
...
}
Создать два стейта.
setArr(arr => arr.concat(item))
Обсуждают сегодня