Вопрос проверяет понимание ссылочной семантики функций и её влияния на оптимизацию.
Функции в JavaScript — это объекты, и при каждом рендере создаётся новая функция. Для React.memo это выглядит как изменение пропса. В результате мемоизация не срабатывает. Даже если логика функции не меняется, ссылка на неё новая. Это частая причина бесполезного использования React.memo.
Чтобы понять проблему, важно помнить, как создаются функции в JavaScript.
При каждом рендере:
<Component onClick={() => doSomething()} />
Создаётся:
новая функция
новая ссылка
новый проп
Для React.memo это означает, что проп изменился.
Из-за этого:
дочерний компонент перерендеривается
мемоизация теряет смысл
оптимизация не работает
Даже если функция делает одно и то же, React не может это определить.
Использование React.memo без стабилизации функций:
создаёт ложное ощущение оптимизации
усложняет код
не даёт выигрыша в производительности
Передача функций через props ломает мемоизацию из-за изменения ссылки. Это нормальное поведение JavaScript, а не баг React.