Управление состоянием в RN-приложении
Вопрос
Как вы организуете состояние и работу с данными в React Native-приложении?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Разделение: серверное состояние и клиентское
Серверное: TanStack Query или RTK Query, ключи, staleTime, инвалидация
Клиентское: `useState` локально, Zustand или Redux Toolkit для общего, Context для редко меняющегося
Селекторы и разделение сторов против лишних рендеров
Связь с платформой: обновление при возврате из фона и восстановлении сети
Персистентность: MMKV для стора и кеша запросов
Что могут спросить следом
- Почему не стоит копировать данные API в Redux?
- Как обновить данные после мутации?
- Что делать с формами?
Разбор
Образцовый ответ: «Делю состояние на серверное и клиентское. Серверное отдаю TanStack Query: ключи по параметрам, разумный staleTime, инвалидация после мутаций, useInfiniteQuery для лент. В RN подключаю focusManager к AppState и onlineManager к NetInfo, чтобы данные обновлялись при возврате и восстановлении сети. Клиентское держу как можно ближе к месту использования: useState для экрана, Zustand для общего, вроде корзины до оформления и настроек, с селекторами против лишних рендеров. Context только для редко меняющегося: тема, текущий пользователь. Стор и кеш запросов сохраняю в MMKV, чтобы приложение открывалось с данными. Формы на React Hook Form, их состояние в стор не тащу»
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.