en mi archivo principal nativo de reacción (App.js) tengo un controlador para las notificaciones de Firebase, en el oyente de notificaciones de primer plano Quiero verificar el nombre de la ruta actual, pero el problema es que no tengo acceso al apoyo de navegación, es por eso que creé una referencia para navegación en otro archivo que luego importo en App.js.
En mi RootNavigation.js
import * as React from 'react'; export const isReadyRef = React.createRef(); export const navigationRef = React.createRef(); export function navigate(name, params) { if (isReadyRef.current && navigationRef.current) { // Perform navigation if the app has mounted navigationRef.current.navigate(name, params); } else { // You can decide what to do if the app hasn't mounted // You can ignore this, or add these actions to a queue you can call later } }Esto me permitió usar navegar (se agregó el método después de otra publicación de stackoverflow), pero ¿cómo puedo obtener el nombre de la ruta actual de NavigationRoot.js?
Cómo lo uso en mi App.js (agregué navegar, pero ¿cómo puedo agregar getCurrentRoute?)
import { navigationRef, isReadyRef } from '@env/RootNavigation.js'; RootNavigation.navigate('NewScreen'); <NavigationContainer ref={navigationRef} onReady={ () => { isReadyRef.current = true; } }> <ROOTSTACK1></ROOTSTACK1> </NavigationContainer>Su archivo RootNavigation debería ser como en este ejemplo .
agregue esta función a continuación en el archivo RootNavigation
function getCurrentRoute(){ if (navigationRef.isReady()) { const route=navigationRef.getCurrentRoute(); console.log(route); // sample output {key:"Home-k2PN5aWMZSKq-6TnLUQNE",name:"Home"} return route.name; } }Y donde quieras usar esta función
// any js module import * as RootNavigation from './path/to/RootNavigation.js'; // ... RootNavigation.getCurrentRoute();