React Docs и разница между useMemo и useCallback

useCallback

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

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

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


person smuggledPancakes    schedule 08.07.2019    source источник
comment
Из связанных документов: useCallback: возвращает мемоизированный обратный вызов. useMemo: возвращает мемоизированное значение. Дальнейшие описания под заголовками также имеют явные различия.   -  person Herohtar    schedule 08.07.2019


Ответы (1)


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

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

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

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

person backtick    schedule 08.07.2019