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:
backButtonHandler
prop en Scene
API.¿Qué piensan ustedes?
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.
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 sireturn 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.