【发布时间】:2021-06-10 17:57:04
【问题描述】:
我在不同的 stackoverflow 帖子以及来自https://reactnavigation.org/docs/connecting-navigation-prop/ 的原始文档中尝试了多种方法 但仍然未能解决我的问题。
我有一个登录屏幕,在我导航到主屏幕后, 我想从主屏幕导航到另一个屏幕,但导航道具未定义。
尝试按照文档进行操作,但仍然失败。
请帮忙,非常感谢。
我已经导入了我的 App.js、HomePage.js(我想导航到另一个屏幕但失败的那个)
目前我拥有的代码是基于文档的,但在单击按钮时无效。
import * as RootNavigation from '../config/RootNavigation';
const HomePage = () => {
const onLogOut = () => {
alert("Logged out")
firebase.auth().signOut();
}
const inventoryOnPress = () => {
RootNavigation.navigate('InventoryScreen')
}
return(
<View>
<CardComponent
style={styles.cardBackground}
title="Inventory"
onPress={inventoryOnPress}/>
</View>
);
}
export default HomePage;
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import { navigationRef } from './src/config/RootNavigation';
const Stack = createStackNavigator();
function NavStack() {
const [initialPage,setInitialPage] = useState('LoginScreen');
return(
<Stack.Navigator
initialRouteName={initialPage}
screenOptions={{
headerTitleAlign:'center',
headerStyle: {
backgroundColor: '#621FF7'
}
}}
>
<Stack.Screen
name="LoginScreen"
component={LoginPage}
/>
<Stack.Screen
name="HomeScreen"
component={HomePage}
headerLeft={null}
/>
<Stack.Screen
name="SignUpScreen"
component={SignUpPage}
/>
<Stack.Screen
name="InventoryScreen"
component={InventoryPage}
/>
</Stack.Navigator>
)
}
function App() {
return (
<NavigationContainer ref={navigationRef}>
<NavStack />
</NavigationContainer>
);
}
}
// RootNavigation.js
import * as React from 'react';
export const navigationRef = React.createRef();
export function navigate(name, params) {
navigationRef.current?.navigate(name, params);
}
// add other navigation functions that you need and export them
【问题讨论】:
-
请不要发布墙代码。创建一个重现您遇到的问题的minimal 示例。你在使用 React 导航时遇到了问题。您不需要六个或更多包含问题中样式的组件,这使得在创建最小再现案例的过程中阅读变得困难且频繁(例如您需要提交错误或 github 问题),您将解决你自己的问题。
-
对不起,我已经编辑了帖子中的代码。
标签: javascript react-native react-native-navigation