React-native-router-flux: Вопрос: Поведение кнопки «Назад» в зависимости от сцены [Android]

Созданный на 6 сент. 2016  ·  3Комментарии  ·  Источник: aksonov/react-native-router-flux

В текущей версии, которую я установил (3.35.0), есть возможность назначить пользовательский backButtonHandler для Router . Хотя это полезно, моему приложению требуется индивидуальное поведение на определенных экранах.

В предыдущей версии у меня был глобальный прослушиватель событий BackAndroid , который получает компонент, который в данный момент находится на переднем плане, из стека навигации с помощью Actions.currentRouter.stack . В цепочке прототипов компонента у меня был метод onBackButton() , который обрабатывает настраиваемое поведение.

В новом API действий не отображается currentRouter. Я могу addEventListener в каждом компоненте и removeEventListener в componentWillUnmount . Но есть ли более чистый способ добиться этого?

Если нет, я предлагаю, чтобы мы либо:

  1. Иметь поддержку backButtonHandler в API Scene .
  2. Передайте некоторые дополнительные аргументы, такие как currentComponent, в вызов обработчика кнопки «Назад».

Что вы ребята думаете?

Версии

  • поток реакции-родной-маршрутизатор - 3.35.0
  • реактивный родной 0.28.0

Самый полезный комментарий

Вы должны обновить RN до 0.32.

С этим у вас может быть глобальный обработчик для большинства сцен. Для этих специальных сцен вы можете добавить в них BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack) , RN сначала вызовет более поздний обратный вызов прослушивателя, глобальный обработчик не будет вызываться, если вы return true в более позднем обратном вызове прослушивателя. Я думаю, что это лучшее решение. Просто не забудьте удалить обратный вызов слушателя.

Все 3 Комментарий

удалил содержимое этого поста, сделал отдельный выпуск для You are already in the root scene и поместил его туда.

Эй, у меня та же проблема, и кажется, что удаление обработчика событий с помощью метода componentWillUnmount не работает с этой библиотекой, вы нашли какое-либо другое решение?

Вы должны обновить RN до 0.32.

С этим у вас может быть глобальный обработчик для большинства сцен. Для этих специальных сцен вы можете добавить в них BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack) , RN сначала вызовет более поздний обратный вызов прослушивателя, глобальный обработчик не будет вызываться, если вы return true в более позднем обратном вызове прослушивателя. Я думаю, что это лучшее решение. Просто не забудьте удалить обратный вызов слушателя.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

fgrs picture fgrs  ·  3Комментарии

wootwoot1234 picture wootwoot1234  ·  3Комментарии

jgibbons picture jgibbons  ·  3Комментарии

willmcclellan picture willmcclellan  ·  3Комментарии

basdvries picture basdvries  ·  3Комментарии