如何在 React Native 中路由我的登录屏幕?
How to route my login screen in react native?
我想在初始屏幕后立即添加一个登录屏幕,然后转到我的主屏幕。
const LoginStack = createStackNavigator({
Login: LoginScreen,
Home: HomeStack,
});
问题是即使我在登录屏幕中调用主屏幕,我的 LoginStack 也从未使用过:
<Button onPress = {this.onPressHome}/>
onPressHome = () => {
this.props.navigation.navigate('Home');
};
我的App.js
render() {
if (!this.state.isLoadingComplete && !this.props.skipLoadingScreen) {
return (
<AppLoading
startAsync={this._loadResourcesAsync}
onError={this._handleLoadingError}
onFinish={this._handleFinishLoading}
/>
);
我假设您正在使用 React Navigation
进行路由。您可以将第二个参数传递给 createStackNavigator
,这是 Stack.
的配置
如果将对象传递到堆栈,则可以定义所需的屏幕。所以你的代码看起来像:
const LoginStack = createStackNavigator({
Login: LoginScreen,
Home: HomeStack,
},
{
initialRouteName: 'Login',
});
然后,如果您像现在一样使用该按钮,它应该可以正常工作。
因此,在您的情况下,您需要将 App.js
更改为如下所示:
export default App extends Component {
componentDidMount = () => {
this.setState({
isLoadingComplete: true
})
}
render() {
// This is the loading screen?
if (!this.state.isLoadingComplete && !this.props.skipLoadingScreen) {
return (
<AppLoading
startAsync={this._loadResourcesAsync}
onError={this._handleLoadingError}
onFinish={this._handleFinishLoading}
/>
) else {
return <LoginStack />
}
一旦您的 LoadingIsComplete
变为真,它将呈现 LoginStack
我想在初始屏幕后立即添加一个登录屏幕,然后转到我的主屏幕。
const LoginStack = createStackNavigator({
Login: LoginScreen,
Home: HomeStack,
});
问题是即使我在登录屏幕中调用主屏幕,我的 LoginStack 也从未使用过:
<Button onPress = {this.onPressHome}/>
onPressHome = () => {
this.props.navigation.navigate('Home');
};
我的App.js
render() {
if (!this.state.isLoadingComplete && !this.props.skipLoadingScreen) {
return (
<AppLoading
startAsync={this._loadResourcesAsync}
onError={this._handleLoadingError}
onFinish={this._handleFinishLoading}
/>
);
我假设您正在使用 React Navigation
进行路由。您可以将第二个参数传递给 createStackNavigator
,这是 Stack.
如果将对象传递到堆栈,则可以定义所需的屏幕。所以你的代码看起来像:
const LoginStack = createStackNavigator({
Login: LoginScreen,
Home: HomeStack,
},
{
initialRouteName: 'Login',
});
然后,如果您像现在一样使用该按钮,它应该可以正常工作。
因此,在您的情况下,您需要将 App.js
更改为如下所示:
export default App extends Component {
componentDidMount = () => {
this.setState({
isLoadingComplete: true
})
}
render() {
// This is the loading screen?
if (!this.state.isLoadingComplete && !this.props.skipLoadingScreen) {
return (
<AppLoading
startAsync={this._loadResourcesAsync}
onError={this._handleLoadingError}
onFinish={this._handleFinishLoading}
/>
) else {
return <LoginStack />
}
一旦您的 LoadingIsComplete
变为真,它将呈现 LoginStack