Причина опытного поведения не в том, что useEffect
не работает. Это из-за того, как работают компоненты функций.
Если вы посмотрите на ваш дочерний компонент, если useEffect
выполняется и компонент перезапускается, defaultValues
будет снова установлен в 0
, потому что код внутри функции выполняется в каждом цикле рендеринга.
Чтобы обойти это, вам нужно будет использовать useState
, чтобы поддерживать локальное состояние согласованным при рендеринге.
Это будет выглядеть примерно так это:
function EditKat({ aa }) {
// Data stored in useState is kept across render cycles
let [defaultValues, setDefaultValues] = useState(0)
useEffect(() => {
setDefaultValues(2) // setDefaultValues will trigger a re-render
}, [aa])
console.log(defaultValues)
}