Я использую реагирующую навигацию 2 с React native для создания потока аутентификации (после этого учебное пособие ).
Приложение работает нормально, когда я запускаю его в симуляторе iPhone 6s.Приложение перенаправляет меня на экран приветствия, поскольку userToken не найден в AsyncStorage .
Мой код следующий:
AuthLoadingScreen.js
import React from 'react'
import {
StyleSheet,
View,
ActivityIndicator,
AsyncStorage,
} from 'react-native'
export default class AuthLoadingScreen extends React.Component {
constructor() {
super()
this.loadApp()
}
// Remember logged in user
loadApp = async () => {
const userToken = await AsyncStorage.getItem('userToken')
this.props.navigation.navigate(userToken ? 'App' : 'Auth')
}
render() {
return (
<View style={styles.container}>
<ActivityIndicator size="large" color="#fff" />
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#aa73b7',
alignItems: 'center',
justifyContent: 'center',
},
})
WelcomeScreen.js
import React from 'react'
import {
StyleSheet,
View,
Text,
} from 'react-native'
export default class WelcomeScreen extends React.Component {
render() {
return (
<View style={styles.container}>
<Text>WelcomeScreen</Text>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#aa73b7',
alignItems: 'center',
justifyContent: 'center',
},
})
App.js
import { createSwitchNavigator, createStackNavigator } from 'react-navigation'
import WelcomeScreen from './src/components/screens/WelcomeScreen'
import AuthLoadingScreen from './src/components/screens/AuthLoadingScreen'
const AuthStackNavigator = createStackNavigator({
Welcome: WelcomeScreen,
})
export default createSwitchNavigator({
Authloading: AuthLoadingScreen,
Auth: AuthStackNavigator
})
Однако, когда я запускаю следующее приложение в симуляторе iPhone X, оно продолжает показывать индикатор активности вместо того, чтобы направлять меня на экран приветствия (ожидаемое поведение).
Может кто-нибудь объяснить, почему это происходит?