Должен ли хук React useMemo запоминать повторные вызовы с одинаковыми значениями зависимостей? - PullRequest
1 голос
/ 04 ноября 2019

У меня есть проблема, когда (поддельная) долго работающая / дорогая функция внутри функционального компонента, кажется, не запоминается, как я думаю, что это будет.

Из моего понимания запоминания, вызовЗапомнившаяся функция с тем же значением параметра просто вернет результат предыдущего вызова.

Это ТОЛЬКО происходит с useMemo (по крайней мере, в моем приложении), когда изменяются значения компонента, которых нет в списке зависимостей. Я понимаю, что другим значениям нужно будет повторно запустить дорогую функцию снова, но даже если я вызову функцию с ранее использованным значением (значения / примитивные типы, а не ссылочные типы / объекты), она снова запустит дорогую функцию.

Либо я не совсем правильно понял, либо мое понимание того, что делает useMemo, не совсем верно (это то, где приходит React.memo?).

Это можно увидеть в этом элементарном stackblitz .

Может кто-нибудь сказать мне, где я иду не так, пожалуйста.

1 Ответ

2 голосов
/ 04 ноября 2019

Что вы думаете, вы можете сказать 50% правильно.

useMemo не выполняет код снова для того же набора параметров, но

Он запоминает только последнийзначение параметров.

В вашем примере, когда вы нажимаете кнопки + и -, вы изменяете значение value от предыдущего значения. Если вы возвращаетесь к тому же значению 2-го щелчка, это не означает, что memoize вернет значение без выполнения функции.

Попробуйте добавить кнопку и, нажав на нее, установить то же текущее значение setValue(value), выувидим, что пересчета не происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...