Ответ вслух Middle Навигация обновлено

Структура навигации в приложении

Вопрос

Как вы построите навигацию приложения с авторизацией, вкладками и экранами деталей?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «В корне один стек, где по состоянию авторизации рендерятся либо экраны входа, либо основная часть. Основная часть это нижние вкладки, у каждой свой Native Stack, чтобы история вкладок не смешивалась.

Что должно прозвучать в ответе

  • Корень: условный рендер групп экранов по состоянию авторизации

  • Основная часть: Bottom Tabs, внутри каждой вкладки свой Native Stack

  • Модальные экраны в корневом стеке поверх вкладок

  • Параметры только сериализуемые, типизация через ParamList

  • Диплинки через `linking` или Expo Router

  • Эффекты по фокусу, а не по монтированию

Что могут спросить следом

  • Где разместить экран, который должен открываться поверх нижней панели?
  • Как обработать диплинк на экран, требующий входа?
  • Как сохранить позицию прокрутки при смене вкладок?

Разбор

Образцовый ответ: «В корне один стек, где по состоянию авторизации рендерятся либо экраны входа, либо основная часть. Основная часть это нижние вкладки, у каждой свой Native Stack, чтобы история вкладок не смешивалась. Экраны, которые должны перекрывать панель, например оформление заказа или полноэкранное фото, кладу в корневой стек как модальные. В параметры передаю только id, все экраны типизированы через ParamList. Диплинки настраиваю через linking, а если проект на Expo, через Expo Router, где адреса получаются из файлов. Если ссылка ведёт на закрытый экран, сохраняю адрес, показываю вход и после него перехожу. Загрузку данных при возврате на экран делаю через useFocusEffect или фокус-менеджер запросов»

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.