У меня есть обработчик событий, который устанавливает выбранное значение в списке на [values, setValues]
ловушку состояния.После этого у меня есть хук useEffect
, который вызывает хук состояния [options, setOptions]
, чтобы установить это значение на options
.Однако, хотя setValues
может установить состояние (которое отображается, когда я console.log
, setOptions не может установить новое состояние values
в состояние options
ОБНОВЛЕНИЕ
Перемещение console.log(options.data)
из эффекта решает проблему частично, потому что оно регистрирует текущее значение, однако, возвращая это значение и используя его в другом настраиваемом хуке, возвращает значение по умолчанию options
. Я обновил код.
Я пытался использовать useRef для получения текущего значения, но моя реализация не работает. Возможно, я ошибаюсь в этом бите.
const useFirstCustomHook = () => {
const [options, setOptions] = useState({
data: null
})
const [values, setValues] = useState({
name: "",
myid: "my-id"
});
//state changer
function handleChange(event, id) {
setValues(oldValues => ({
...oldValues,
name: event.target.value,
myid: id.props.id,
}));
}
useEffect(() => {
setOptions({
data: values
})
},[values])
console.log(options.data) //not printing the current state
return {
options
}
}
export default useFirstCustomHook
const [waitState, setWait] = useState(0)
const { values, options } = useFirstCustomHook ()
useEffect(() => {
console.log(options)
let wait = () => {
setTimeout(() => setWait(waitState+1), 10000)
}
async function fetchData() {
//fetch some data then wait
wait()
}
},[wait])
export default useFetchedData
Я ожидаю новое состояниеoptions
совпадает с текущим значением values
, но отражает только значение по умолчанию.