我正在使用 AsyncStorage 来检测它是否是首次启动。
如果用户第一次启动应用程序,应用程序会将他们带到“TourScreen1”页面。或“饲料”。
但是下面的代码不起作用。
这返回对象。它应该返回字符串。
有没有办法让这段代码返回字符串?
或者我需要使用其他方式吗?
const Initial = createAppContainer(
createSwitchNavigator(
{
Cover,
TourScreen1,
TourScreen2,
TourScreen3,
TourScreen4,
Register: RegisterToLogin,
Feed: TabNavigator
},
{
initialRouteName: AsyncStorage.getItem("isLaunched").then(value => {
if (value === null) {
return "TourScreen1";
} else return "Feed";
})
}
)
);
最佳答案
由于 createSwitchNavigator 正如 suraj 所说是同步的,所以你不能给出动态初始路由名称,我所做的是制作了一个闪屏作为初始页面,该页面只会有你的应用程序的 Logo ,在该页面中你可以有:
class SplashScreen extends React.Component {
constructor(){
super();
}
componentDidMount(){
AsyncStorage.getItem("alreadyLaunched").then(value => {
if(value == null){
AsyncStorage.setItem('alreadyLaunched', true); // No need to wait for `setItem` to finish, although you might want to handle errors
this.props.navigation.navigate('FirstTimeScreen');
}
else{
this.props.navigation.navigate('UsualScreen');
}}) // Add some error handling, also you can simply do
}
render(){
return(
<Image /> // image of app
)
}
希望有帮助。如有疑问请放心
关于javascript - 如何根据首次启动设置初始屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59941658/