Вы пытаетесь прочитать значение playerRef.current
сразу после обновления состояния:
const add = useCallback(() => {
addPlayers([{ name: "new" }, { name: "newer" }]);
console.log("player # after dispatch ", playerRef.current.length);
}, [playerRef, addPlayers]);
Однако значение playerRef.current
не обновляется, пока не будет запущен следующий эффект:
useEffect(() => {
playerRef.current = state;
console.log("players #", playerRef.current.length);
}, [state]);
Что произойдет в самое ближайшее время после завершения вызова useCallback
*
Вместо этого следует прочитать значение state
. Ссылки должны использоваться в качестве переменных экземпляра для захвата значений, которые будут считаны позднее; это не очень хороший вариант использования для них. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '' 10 '* * * * * * * *' ', возможно, это не так. точно, но в любом случае, вы будете в зависимости от состояния гонки, делая это.