@DonorOfLove

Почему при передаче Ref в дочерние компонентах Ref.current равен null/undef?

Я пытаюсь передать активный экран в дочерний экран, чтобы прекратить работу функции в дочернем экране, если активный экран !== дочернему экрану, используя следующий код:

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 еще не потерян
624d66298d062504601735.png
Но если пытаться извлечь из него Current, то он становится null/undef (в зависимости от того, через CreateRef или useRef создавался ref), пробовал так же в дочернем компоненте инициализировать ref в useEffect, тк было подозрение, что это происходит из-за того, что рендер экрана еще не произошел, соответственно возвращается undef, но это не помогло. Жду ваши варианты
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы