React-native-router-flux: Pregunta: Comportamiento del botón Atrás específico de la escena [Android]

Creado en 6 sept. 2016  ·  3Comentarios  ·  Fuente: aksonov/react-native-router-flux

En la versión actual que he instalado (3.35.0), existe una disposición para asignar backButtonHandler personalizados para el Router . Si bien esto es útil, mi aplicación requiere un comportamiento personalizado en ciertas pantallas.

En la versión anterior, solía tener un detector de eventos global BackAndroid que obtiene el componente actualmente en primer plano desde la pila de navegación con Actions.currentRouter.stack . En la cadena de prototipos del componente, tenía un método onBackButton() que maneja el comportamiento personalizado.

La nueva Action API no tiene currentRouter expuesto. Puedo addEventListener en cada componente y removeEventListener en componentWillUnmount . Pero, ¿hay una forma más limpia de lograr esto?

Si no, propongo que:

  1. Tener backButtonHandler prop en Scene API.
  2. Pase algunos argumentos adicionales como componente actual, a la llamada del controlador del botón Atrás.

¿Qué piensan ustedes?

Versiones

  • react-native-router-flujo - 3.35.0
  • reaccionar nativo 0.28.0

Comentario más útil

Debe actualizar RN a 0.32.

Con esto , puede tener el controlador global para la mayoría de las escenas. Para esas escenas especiales, puede agregar BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack) en ellas, RN llamará primero a la devolución de llamada del oyente posterior, no se llamará al controlador global si return true en la devolución de llamada del oyente posterior. Creo que es una mejor solución. Solo recuerda eliminar la devolución de llamada del oyente.

Todos 3 comentarios

eliminé el contenido de esta publicación, hice una edición separada por You are already in the root scene y la puse allí.

Oye, tengo el mismo problema y parece que eliminar el controlador de eventos con el método componentWillUnmount no funciona con esta biblioteca, ¿encontraste alguna otra solución?

Debe actualizar RN a 0.32.

Con esto , puede tener el controlador global para la mayoría de las escenas. Para esas escenas especiales, puede agregar BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack) en ellas, RN llamará primero a la devolución de llamada del oyente posterior, no se llamará al controlador global si return true en la devolución de llamada del oyente posterior. Creo que es una mejor solución. Solo recuerda eliminar la devolución de llamada del oyente.

¿Fue útil esta página
0 / 5 - 0 calificaciones