memo да, но в useMemo в доке не нашел информацию об этом
А что значит поверхностное?
вид сравнения который означает что если будут сравниваться два объекта то они будут сравниваться по ссылкам, а не по тому что входит в объект, но вроде разобрался, useEffect использует поверхностное, думаю useMemo и другие тоже
ну или неглубокое сравнение
А зачем сувать в массив зависимостей useMemo объект, а не достать определенное свойство, которое как раз требуется для вычислений в теле useMemo?
В чем смысл вообще этого действия, если у тебя после каждого ререндера ссылка на объект меняется и useMemo пересоздается?
почему ссылка на объект будет меняться на каждый рендер, зависит от ситуации? к примеру используем redux забираем стору, ссылка на этот стор будет одна, когда изменится стор, тогда получим новую ссылку и только в этом случае useMemo запустится, подписываться на какое нибудь примитивное свойство не всегда правильно, к примеру в объекте много свойств и внутри useMemo мы обращаемся к множеству свойств этого объекта, при обновлении объекта нельзя быть уверенным что именно то примитивное свойство которое было выбрано в зависимостях изменится, а прокидывать каждое свойство на которое опираемся не лучшая идея, когда можно указать в качестве ссылки объект и проверять их по ссылке(как выяснелось)
*когда можно указать в качестве зависимости объект и проверять их по ссылке(как выяснелось)
Массив депсов везде поверхностно сравнивается
Обсуждают сегодня