Структура навигации в приложении
Вопрос
Как вы построите навигацию приложения с авторизацией, вкладками и экранами деталей?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Корень: условный рендер групп экранов по состоянию авторизации
Основная часть: Bottom Tabs, внутри каждой вкладки свой Native Stack
Модальные экраны в корневом стеке поверх вкладок
Параметры только сериализуемые, типизация через ParamList
Диплинки через `linking` или Expo Router
Эффекты по фокусу, а не по монтированию
Что могут спросить следом
- Где разместить экран, который должен открываться поверх нижней панели?
- Как обработать диплинк на экран, требующий входа?
- Как сохранить позицию прокрутки при смене вкладок?
Разбор
Образцовый ответ: «В корне один стек, где по состоянию авторизации рендерятся либо экраны входа, либо основная часть. Основная часть это нижние вкладки, у каждой свой Native Stack, чтобы история вкладок не смешивалась. Экраны, которые должны перекрывать панель, например оформление заказа или полноэкранное фото, кладу в корневой стек как модальные. В параметры передаю только id, все экраны типизированы через ParamList. Диплинки настраиваю через linking, а если проект на Expo, через Expo Router, где адреса получаются из файлов. Если ссылка ведёт на закрытый экран, сохраняю адрес, показываю вход и после него перехожу. Загрузку данных при возврате на экран делаю через useFocusEffect или фокус-менеджер запросов»
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.