Итак, я пытаюсь использовать эффект для передачи компонента из избыточности, вот мой код:
const initState = {
newAttribs: { ...props.state.Auth },
};
const [userList, setUserList] = useState(initState);
useEffect(() => {
setUserList({ ...userList, newAttribs: { ...props.state.Auth } });
}, [props.state.Auth]);
console.info("userList now", userList);
но он продолжает получать мне предупреждение в консоли:
WARNING in [eslint]
src\pages\Login.jsx
Line 15:6: React Hook useEffect has a missing dependency: 'userList'. Either include it or remove the dependency array. You can also do a functional update 'setUserList(u => ...)' if you only need 'userList' in the 'setUserList' call react-hooks/exhaustive-deps
Может кто-нибудь объяснить мне, где я сделал неправильно здесь....
Ваш хук эффекта зависит от userList
, но он не включен в массив зависимостей. Одной полезной альтернативой является использование формы функции обратного вызова установщика состояния:
setUserList(userList => (
{ ...userList, newAttribs: { ...props.state.Auth }) }
);
это работает, но, кажется, он не понимает..
Вы используете userList
внутри эффекта, поэтому обязательно включите его в массив зависимостей, чтобы убедиться, что эффект работает с его текущим значением. Функциональная форма установщика избавляется от этой зависимости, поскольку функция определена внутри тела эффекта (и всегда будет ссылаться на текущую версию состояния).
можно подробнее...