gpt4 book ai didi

android - 找不到导航对象。您的组件是否在导航器的屏幕内?

转载 作者:行者123 更新时间:2023-12-03 17:22:58 24 4
gpt4 key购买 nike

在我下面的代码中,当我使用 useNavigation() 时,它会给出一个错误,比如我的问题
如何使用useNavigation,请任何人都可以解决这个错误... 错误:找不到导航对象。您的组件是否在导航器的屏幕内?
我从这里跟踪代码 https://rnfirebase.io/messaging/notifications#handling-interaction

import React, {useState, useEffect } from 'react';
import messaging from '@react-native-firebase/messaging';
import { NavigationContainer, useNavigation } from "@react-navigation/native";
import { createStackNavigator, HeaderTitle, } from "@react-navigation/stack";
const Stack = createStackNavigator();

function App(props) {
const navigation = props.navigation
//const navigation = useNavigation();
const [initialRoute, setInitialRoute] = useState('Splash Screen');

useEffect(() => {
messaging().onMessage(remoteMessage => {
navigation.navigate("Description Screen");
console.log(props.navigation)
});
}, []);

return (
<NavigationContainer>
<Stack.Navigator
initialRouteName={initialRoute}
headerMode="none"
screenOptions={{
gestureEnabled: true,

}}
>

<Stack.Screen name="Splash Screen" component={SplashScreen} />
<Stack.Screen name="Description Screen" component={DescriptionScreen} />
</Stack.Navigator>

</NavigationContainer>

);
}

export default App;

最佳答案

您无法访问导航,因为它还没有准备好。您可以为您的导航创建 Ref,然后将其导出并在您想要的地方使用它。

// App.js

import { NavigationContainer } from '@react-navigation/native';
import { navigationRef } from './RootNavigation';

export default function App() {
return (
<NavigationContainer ref={navigationRef}>{/* ... */}</NavigationContainer>
);
}

`
然后你可以通过定义和导出你的方法来使用它

// RootNavigation.js

import * as React from 'react';

export const navigationRef = React.createRef();

export function navigate(name, params) {
navigationRef.current?.navigate(name, params);
}

任何你可以使用的方式 onReady回电说您的导航已准备就绪

// App.js

import { NavigationContainer } from '@react-navigation/native';
import { navigationRef, isReadyRef } from './RootNavigation';

export default function App() {
React.useEffect(() => {
return () => {
isReadyRef.current = false
};
}, []);

return (
<NavigationContainer
ref={navigationRef}
onReady={() => {
isReadyRef.current = true;
}}
>
{/* ... */}
</NavigationContainer>
);
}

关于android - 找不到导航对象。您的组件是否在导航器的屏幕内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65562835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com