Как направить мой экран входа в систему реагировать на родной? - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу добавить экран входа сразу после заставки, а затем перейти на домашний экран.

 const LoginStack = createStackNavigator({
Login: LoginScreen,
Home: HomeStack,
});

Проблема в том, что мой LoginStack никогда не используется, даже если я вызываю домашний экран на экране входа в систему:

 <Button onPress = {this.onPressHome}/>

 onPressHome  = () => {
this.props.navigation.navigate('Home');
};

My App.js

 render() {
    if (!this.state.isLoadingComplete && !this.props.skipLoadingScreen) {
        return (
            <AppLoading
                startAsync={this._loadResourcesAsync}
                onError={this._handleLoadingError}
                onFinish={this._handleFinishLoading}
            />
        );

1 Ответ

0 голосов
/ 14 ноября 2018

Я предполагаю, что вы используете 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

...