начальные значения useState и useRef вычисляются при каждом повторном рендеринге - PullRequest
0 голосов
/ 17 октября 2019

Я опаздываю на одну вещь:

const [object, setObject] = useState(new SomeObject());

Здесь мы создаем экземпляр SomeObject на каждый повторный рендеринг . Затем, если это начальный рендеринг компонента, он возвращается к object, в противном случае он просто отбрасывается.

Все, что передано в качестве начального аргумента, оценивается и отбрасывается снова и снова. Также лучше быть чистым, поскольку повторные визуализации могут происходить в произвольные интервалы и в произвольных количествах. Учитывая, что построение некоторых объектов или больших массивов может быть довольно дорогим, не слишком ли это неоптимально?

Какое здесь решение? Я что-то неправильно понимаю, или такая элементарная функция в React реализована таким неоптимальным образом?

1 Ответ

4 голосов
/ 17 октября 2019

Вы можете передать функцию на хук useState, чтобы получить значение , с ленивой инициализацией .

Например:

const [state, setState] = useState(() => new SomeObject());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...