Как стать автором
Обновить

Как я ускорил свое мобильное приложение BookDesk на React Native в 3 раза?

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров2.9K
Всего голосов 10: ↑8 и ↓2+11
Комментарии2

Комментарии 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 - особенно если в пропсах прилетает объект, один и тот же по данным, но по какой-то причине новый как объект

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории