Выбор ответа Junior Нативные модули спрашивают часто обновлено

Подписка на события нативного модуля

Вопрос

Компонент подписывается на событие нативного модуля в useEffect. Что обязательно?

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

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

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

Коротко

Правильный ответ: Вернуть из эффекта функцию очистки, вызывающую subscription.remove(). Подписка держит колбэк, а колбэк держит компонент и его состояние.

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

  1. Ничего: подписка снимется сама, когда компонент размонтируется
  2. Подписываться только в корневом компоненте приложения, тогда утечек не будет
  3. Вызвать NativeModules.reset() при уходе с экрана, чтобы сбросить слушателей
  4. Вернуть из эффекта функцию очистки, вызывающую subscription.remove()правильный ответ

Разбор

Подписка держит колбэк, а колбэк держит компонент и его состояние. Без remove() при каждом монтировании добавляется новый слушатель, старые продолжают вызываться и пытаются обновить размонтированный компонент. Автоматического снятия нет, а метода NativeModules.reset не существует.

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

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