Выбор ответа Junior Нативные модули спрашивают часто обновлено
Подписка на события нативного модуля
Вопрос
Компонент подписывается на событие нативного модуля в useEffect. Что обязательно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Вернуть из эффекта функцию очистки, вызывающую subscription.remove(). Подписка держит колбэк, а колбэк держит компонент и его состояние.
Варианты ответа
- Ничего: подписка снимется сама, когда компонент размонтируется
- Подписываться только в корневом компоненте приложения, тогда утечек не будет
- Вызвать
NativeModules.reset()при уходе с экрана, чтобы сбросить слушателей - Вернуть из эффекта функцию очистки, вызывающую
subscription.remove()правильный ответ
Разбор
Подписка держит колбэк, а колбэк держит компонент и его состояние. Без remove() при каждом монтировании добавляется новый слушатель, старые продолжают вызываться и пытаются обновить размонтированный компонент. Автоматического снятия нет, а метода NativeModules.reset не существует.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.