Как передать реквизиты, т. Е. ScreenProps с потоком аутентификации, используя реагирующую навигацию - PullRequest
0 голосов
/ 16 января 2019

Я хочу передать this.props компонентам экрана из app.js, ниже приведен мой код.

Я пытался сделать то же самое, но когда я передаю его как screenProp, он отображается как неопределенный в компоненте экрана.

App.js
import { createAppContainer, createSwitchNavigator, createStackNavigator } from 'react-navigation';
import HomeScreen from './HomeScreen';
import MapScreen from './MapScreen';
import LoginScreen from './LoginScreen';
import RegisterDeviceScreen from './RegisterDeviceScreen';
import React, { Component } from 'react';
import {
  AsyncStorage,
} from 'react-native';

class AuthLoadingScreen extends Component {
  componentDidMount() {
    this._bootstrapAsync();
  }

  _bootstrapAsync = async () => {
    const userToken = await AsyncStorage.getItem('sessionText');
    if (!userToken) {
      await AsyncStorage.clear();
    }
    await this.props.navigation.navigate(userToken ? 'App' : 'Auth');
  };

  render() {
    return <RegisterDeviceScreen screenProps={this.props} />;
  }
}

const AppStack = createStackNavigator(
  {
    HomeScreen: { screen: HomeScreen },
    MapScreen: { screen: MapScreen },
    LoginScreen: { screen: LoginScreen },
    RegisterDeviceScreen: { screen: RegisterDeviceScreen },
  },
  {
    navigationOptions: {
      gesturesEnabled: false,
    }
  });

const AuthStack = createStackNavigator(
  {
    LoginScreen: { screen: LoginScreen },
    RegisterDeviceScreen: { screen: RegisterDeviceScreen },
    HomeScreen: { screen: HomeScreen },
    MapScreen: { screen: MapScreen },
  },
  {
    navigationOptions: {
      gesturesEnabled: false,
    }
  });

const SwitchNavigator = createSwitchNavigator(
  {
    AuthLoading: AuthLoadingScreen,
    Auth: AuthStack,
    App: AppStack,
  },
  {
    initialRouteName: 'AuthLoading',
  }
);

const AppContainer = createAppContainer(SwitchNavigator);
export default AppContainer;

Когда я пытаюсь войти в него в componentdidmount () внутри компонента homescreen, он показывает screenProp как неопределенный.

...