Я не смог найти упоминаний об этом в официальных документах React или в благосфере.
Я думаю вы можете и обычно должны делать что-то подобное, когда у вас есть больше чем одна переменная состояния:
function MyComponent() {
const [foo, setFoo] = useState(0);
const [bar, setBar] = useState(1);
return (
<div>
<div onClick={() => setFoo(foo+1)}>{foo}</div>
<div onClick={() => setBar(bar+1)}>{bar}</div>
</div>
);
}
Разрешено ли это и поощряется, в отличие от вызова useState
единовременно с всеобъемлющим объектом с именем state
, который имеет поля foo
и bar
? Если это разрешено и поощряется, как useState
узнает, когда он вызывается, ссылается ли он на уже сохраненный foo
или на уже сохраненный bar
?
У меня также в основном тот же вопрос о useCallback
. Мне было интересно, если я вызову useCallback
дважды в одном и том же компоненте для создания двух разных обратных вызовов, как useCallback
узнает, что я имел в виду ссылку на функцию, определенную до создания новой, и если ссылается на уже использованную функцию он должен вернуть запомненную версию, как он узнает, какой из двух? Особенно, если оба обратных вызова имеют одинаковый список зависимостей?