Можете ли вы вызывать React useState и useCallback несколько раз в одном функциональном компоненте? Если так, как это работает? - PullRequest
0 голосов
/ 18 февраля 2020

Я не смог найти упоминаний об этом в официальных документах 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 узнает, что я имел в виду ссылку на функцию, определенную до создания новой, и если ссылается на уже использованную функцию он должен вернуть запомненную версию, как он узнает, какой из двух? Особенно, если оба обратных вызова имеют одинаковый список зависимостей?

1 Ответ

3 голосов
/ 18 февраля 2020

Можно использовать несколько useState в вашей функции рендеринга.

Одно важное требование - их число и порядок всегда должны быть одинаковыми.

Ссылки:

...