我正在自学使用React Native制作应用程序。我正在使用React Navigation在按钮按下时在屏幕之间导航。我可以很好地导航屏幕。然而,在一个导航中,我还想重置stackNavigator
。我已经查看了使用NavigationActions.reset()
方法重置stackNavigator
的解决方案,但我无法使其在按钮上起作用。再次强调,我正试图使用一个按钮来同时导航到新屏幕并重置stackNavigator
。这是我的代码:
import React from 'react';
import { Button, StyleSheet, Text, View } from 'react-native';
import { NavigationActions, StackActions, createStackNavigator } from 'react-navigation'; // Version can be specified in package.json
class HomeScreen extends React.Component {
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
<Button
title="Join Group"
onPress={() => this.props.navigation.push('JoinGroup')}
/>
<Button
title="Create Group"
onPress={() => this.props.navigation.push('CreateGroup')}
/>
</View>
);
}
}
class JoinGroupScreen extends React.Component {
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Join Here</Text>
</View>
);
}
}
class Index extends React.Component {
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Index</Text>
<Button
title="Login"
onPress={() => this.props.navigation.push('Login')}
/>
<Button
title="Register"
onPress={() => this.props.navigation.push('Register')}
/>
</View>
);
}
}
/* This Screen contains the button where I want to navigate screens and reset the StackNavigator */
class LoginScreen extends React.Component {
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Login Here</Text>
<Button
title="Login"
onPress={() => this.props.navigation.navigate('Home')}
/>
</View>
);
}
}
class CreateGroupScreen extends React.Component {
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Create Here</Text>
</View>
);
}
}
const RootStack = createStackNavigator(
{
Home: {
screen: HomeScreen,
},
JoinGroup: {
screen: JoinGroupScreen,
},
CreateGroup: {
screen: CreateGroupScreen,
},
Login: {
screen: LoginScreen,
},
Index: {
screen: Index,
},
},
{
initialRouteName: 'Index',
}
);
export default class App extends React.Component {
render() {
return <RootStack />;
}
}