Я пытаюсь передать активный экран в дочерний экран, чтобы прекратить работу функции в дочернем экране, если активный экран !== дочернему экрану, используя следующий код:
const Drawer = createDrawerNavigator();
function App() {
const routeNameRef = createRef();
const navigationRef = useNavigationContainerRef();
return (
<Context.Provider value={getCurrentRouteName}>
<NavigationContainer ref={navigationRef}
onReady={() => {
routeNameRef.current = navigationRef.getCurrentRoute().name;
}}
onStateChange={async () => {
const currentRouteName = navigationRef.getCurrentRoute().name;
routeNameRef.current = currentRouteName;
}}>
<Drawer.Navigator>
<Drawer.Screen name="Home" component={Home}
initialParams={{routeNameRef}}}/>
<Drawer.Screen name="Favorite" component={Favorite}/>
</Drawer.Navigator>
<Footer/>
</NavigationContainer>
</Context.Provider>
);
}
Я пытался передать ref через initialParams и с помощью context, и если обратиться к props.route или context, то current еще не потерян
Но если пытаться извлечь из него Current, то он становится null/undef (в зависимости от того, через CreateRef или useRef создавался ref), пробовал так же в дочернем компоненте инициализировать ref в useEffect, тк было подозрение, что это происходит из-за того, что рендер экрана еще не произошел, соответственно возвращается undef, но это не помогло. Жду ваши варианты