Estoy buscando una forma de llamar a una función en cada pantalla para rastrear la interacción del usuario con cada pantalla. así por ejemplo:
function track(screenName){ console.log(screenName) } function ScreenA(){ track('ScreenA') return <View /> } function ScreenB(){ track('ScreenB') return <View /> }En lugar de tener que llamar a la función manualmente en cada pantalla por separado, creo que tiene que haber una forma de hacerlo directamente desde el navegador. Estoy usando :
react-navigation 5.9 react-native 0.65Usando la respuesta de @ sushrut619, apliqué lo siguiente:
export function App(){ const [routeName, setRouteName] = React.useState('Unknown'); return ( ... <NavigationContainer linking={linking} onStateChange={state => { const newRouteName = getActiveRouteName(state); if (routeName !== newRouteName) { setRouteName(newRouteName); //use whatever tracking function you want with newRouteName } }}> <MainAppStack /> </NavigationContainer> ... ); }y en un archivo de utilidad diferente agregué esta función:
export function getActiveRouteName(state: NavigationState | PartialState<NavigationState> | undefined): string { if (!state || typeof state.index !== 'number') { return 'Unknown'; } const route = state.routes[state.index]; if (route.state) { return getActiveRouteName(route.state); } return route.name; }