Я начинаю использовать реагирующие хуки, и я решаю поместить объект вместо переменной в функцию useState
:
const [foo, setFoo] = useState({
term: '',
loading: false,
...
});
, но позже, когда я хочу обновить его
const onChange = (e) => {
const { value } = e.target;
setFoo({ ...foo, term: value });
if(value) setFoo({ ...foo, loading: true });
...
}
...
return (
...
<input onChange={onChange} value={term} />
...
)
1. Почему во втором setFoo
когда я проверяю объект foo
, я всегда получаю term
свойство, равное ''
точно так же, как исходное значение, а входные данные небыть в курсе набранных символов?
- Когда я удаляю вторую setFoo
, она работает, поэтому я думаю, что setFoo
является асинхронным, но как решить эту проблему?.
- Я знаю, что мы можем обойти эту проблему, сумев позвонить setFoo
только один раз, но я хочу знать другие решения?
2. Почему такого рода проблемы никогда не возникали в redux
?