Комментарии 2
Еще нюанс - если уж совсем оптимизировать, я бы добавил в статью пример
Синтаксис вида <Button onPress={() -> setDescription('some description')} />
приводит к тому, что на каждый перерендер создается новый обработчик onPress, поэтому лучше сделать так:
const handleSetDescription = useCallback((content) => {
setDescription(content);
}, [setDescription]);
Причем в статье сам хук упомянут, но примера кода нет.
Я правда пришел к тому что оптимизирую и мемоизирую только базовые компоненты ui kit, а на экраны забиваю - потому что код с такими вещами получается хуже читаемый.
По поводу lazy загрузки скринов - не совсем понял, скрины же все таки используются через навигатор, а не напрямую, а при инициализации навигатора вообщем-то все они описываются, а рендерятся только когда нужно.
const handleSetDescription = useCallback((content) => {
setDescription(content);
}, [setDescription]);
Сеттеры стейтов в зависимостях разве имеют смысл? Они никогда не меняются, useState гарантирует стабильность сеттеров
https://www.reddit.com/r/reactjs/comments/tbt2z8/do_i_need_to_setter_functions_to_the_dependency/
https://stackoverflow.com/questions/57180731/react-is-usestate-s-setter-function-able-to-change
PS: сама идея завернуть в useCallback - да, имеет смысл, но тут надо смотреть, все эти мемоизации тоже имеют цену
PPS: если хотите реально угореть по оптимизации, используйте второй аргумент React.memo - особенно если в пропсах прилетает объект, один и тот же по данным, но по какой-то причине новый как объект
Как я ускорил свое мобильное приложение BookDesk на React Native в 3 раза?