Реагируйте на документы и разницу между useMemo и useCallback - PullRequest
0 голосов
/ 08 июля 2019

https://reactjs.org/docs/hooks-reference.html#usecallback

Когда я смотрю на useCallback и useMemo, я вижу то же самое. Вы передаете функцию и массив зависимостей. Эта функция запускается только в случае изменения зависимости.

Эта строка добавлена ​​в конце, и я не могу понять ее: useCallback(fn, deps) is equivalent to useMemo(() => fn, deps) Хотелось бы, чтобы было дополнительное объяснение, оно могло бы помочь мне понять разницу между этими двумя функциями.

Из примеров кода, которые я вижу в Интернете, похоже, что useCallback используется естественным образом для обратных вызовов, а useMemo для кода, не связанного с обратным вызовом. Различаются ли эти функции только по названию? Там должно быть что-то происходит под капотом, что просто не прописано явно? Запоминает ли useCallback ссылку на функцию, а useMemo запоминает возвращенный результат функции?

1 Ответ

1 голос
/ 08 июля 2019

Два приведенных ниже использования функционально эквивалентны:

const fn = useCallback((n) => add(n, n), [add]);

const fn = useMemo(() => (n) => add(n, n), [add]);

useCallback - это особый случай useMemo, который можно использовать, если для создания обратного вызова не требуется предварительное вычисление.

...