react-native - React Native 代码在 iPhone X 模拟器上的行为不同
问题描述
我正在使用带有 React Native 的 React Navigation 2 来构建身份验证流程(遵循本教程)。
当我在 iPhone 6s 模拟器中运行该应用程序时,它运行良好。该应用程序将我引导至欢迎屏幕,因为在AsyncStorage中未找到userToken。
我的代码如下:
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',
},
})
应用程序.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 模拟器中运行以下应用程序时,它会一直显示活动指示器,而不是将我引导至欢迎屏幕(预期行为)。
谁能解释为什么会这样?
解决方案
打电话this.loadApp()
而componentDidMount
不是constructor
它应该工作。
推荐阅读
- php - Wordpress 5.0 自动将所有图像链接到媒体文件
- swift - Firestore“updateData”删除文档中的所有字段
- java - 测试主类退出状态
- mysql - MySQL如何执行insert into ... select
- android - Android Studio:如何在 XML 中使用分叉库?
- encryption - RSA:纯文本到密文
- riscv - 获取主存布局,不特定于仅单个 riscv 实现
- android - 我们如何在不使用 recyclerview 的情况下创建水平列表视图?
- java - textarea 和其他输入返回 null,尽管事先已填充
- c# - 启动后访问 DatabaseContext