【发布时间】:2019-05-27 00:33:32
【问题描述】:
我的应用应该有一个登录屏幕,使用 Google,所以登录后它会转到菜单屏幕。
为了在验证后进入菜单屏幕后按下返回按钮时不会返回登录屏幕。 我已经将堆栈分开,一个用于登录,一个用于其他屏幕
在 App.js 中:
const AuthStack = createStackNavigator({
LoginSplashScreen: LoginSplashScreen
});
const AppStack = createStackNavigator({
MenuScreen:MenuScreen,
DetailsScreen: DetailsScreen,
PhotoScreen: PhotoScreen,
DocumentScreen: DocumentScreen,
AudioScreen: AudioScreen,
ScheduleScreen: ScheduleScreen,
SettingsScreen: SettingsScreen,
FilesScreen: FilesScreen,
GalleryScreen: GalleryScreen
});
const Root= createAppContainer(createSwitchNavigator(
{
AuthStack:AuthStack,
AppStack:AppStack
},
{
initialRouteName: 'AuthStack',
}
));
export default class App extends React.Component {
render() {
return (
<Root/>
)
}
}
所以在 LoginSplashScreen 身份验证后,我使用此代码导航:
this.props.navigation.navigate('AppStack', {
signedIn: true,
name: result.user.name,
photoUrl: result.user.photoUrl
});
导航效果很好,但参数 'name','signedIn','photoUrl' 禁止通过 事实上,当警报时
Alert.alert('',JSON.stringify(this.props.navigation.state.params))
在菜单屏幕上(第二个堆栈),它是空的
我做错了什么?
为什么我的参数没有通过?因为我可能需要另一个抽屉导航。
有没有办法为应用程序中的所有屏幕设置全局参数?
有没有更好的方法来避免在菜单屏幕上按回而不进入登录屏幕?
编辑:
我设法通过设置全局参数来解决这个特定问题:
global.param= result.param;
但是,我仍然需要在 2 个单独的堆栈之间传递的答案
【问题讨论】:
标签: android react-native mobile-development