Выбор ответа Middle Навигация спрашивают часто обновлено
React Navigation: обновить данные при возврате на экран
Вопрос
Пользователь вернулся на список после редактирования, а useEffect(() => load(), []) не сработал. Почему и что использовать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Экран в стеке не размонтируется, эффект не повторится; нужен useFocusEffect. В стеке предыдущие экраны остаются смонтированными ради быстрого возврата и сохранения состояния.
Варианты ответа
- Экран в стеке не размонтируется, эффект не повторится; нужен
useFocusEffectправильный ответ - Нужно добавить
navigationв зависимостиuseEffect, тогда он перезапустится useEffectв React Native вызывается только при первом запуске приложения- Нужно вызвать
navigation.resetпри возврате, чтобы экран смонтировался заново
Разбор
В стеке предыдущие экраны остаются смонтированными ради быстрого возврата и сохранения состояния. Эффект с пустыми зависимостями выполнится один раз при монтировании. useFocusEffect вызывается при каждом получении фокуса и чистит за собой при потере фокуса. Добавление navigation в зависимости ничего не даст (объект стабилен), reset уничтожит историю. С TanStack Query достаточно refetchOnFocus через focusManager.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.