В моем customHook у меня есть обработчик события onchange, который устанавливает состояние values
выбранного элемента в раскрывающемся меню.Затем, основываясь на состоянии values
, я хочу получать некоторые данные через каждые несколько секунд в моем useEffect.Однако после каждого вызова useEffect вместо текущего состояния вызывается начальное значение состояния values
.
Я пытался использовать useRef, как в коде, чтобы получить текущее значение, но он по-прежнему возвращает начальное значение.значение.
const [values, setValues] = useState({
name: "",
myid: "my-id"
});
const valuesRef = useRef(values)
const [waitState, setWait] = useState(0)
//state changers
function handleChange(event, id) {
setValues({
...values,
name: event.target.value,
myid: id.props.id,
});
}
useEffect(() => {
valuesRef.current = values
// logs twice, the first log returns the current state, which I want,
// the second logs the initial state, which is useless to me
console.log(values)
let wait = () => {
setTimeout(() => setWait(waitState+1), 10000)
}
async function fetchData() {
wait()
//fetch some data
}
fetchData()
}, [waitState, values])}
Я просто ожидаю, что он вернет текущее значение values
состояние