Выбор ответа Junior Навигация обновлено

React Navigation: push

Вопрос

Нужно открыть карточку другого товара поверх текущей карточки товара (тот же экран Item). Что вызвать?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: navigation.push('Item', { id }): он всегда добавит новый экран в стек. push гарантированно кладёт новый экран, даже если экран с таким именем уже наверху, и «назад» вернёт к предыдущему товару. setParams меняет параметры текущего экрана, а не открывает новый. replace заменит экран и потеряет историю, goBack…

Варианты ответа

  1. navigation.push('Item', { id }): он всегда добавит новый экран в стекправильный ответ
  2. navigation.goBack() и сразу после него navigate('Item', { id })
  3. navigation.replace('Home'), чтобы сбросить стек перед новой карточкой
  4. navigation.setParams({ id }): он создаст новый экран с другими параметрами

Разбор

push гарантированно кладёт новый экран, даже если экран с таким именем уже наверху, и «назад» вернёт к предыдущему товару. setParams меняет параметры текущего экрана, а не открывает новый. replace заменит экран и потеряет историю, goBack закроет текущую карточку.

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

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