javascript - 如何根据首次启动设置初始屏幕?

标签 javascript react-native react-navigation

我正在使用 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/

相关文章:

javascript - 同步删除src/和dist/之间.pug文件对应的.html文件

javascript - React Native Firebase 事务无法正常工作

react-native - 带有标题/后退按钮的 react 导航模式

reactjs - 远程调试时,React native 组件不会更新

react-native - 但是,这个包本身指定了一个无法解析的 `main` 模块字段

reactjs - 函数组件中的 React/ReactNative 静态属性

javascript - 检查是否已选择输入文件?

javascript - 处理 CouchDB Map/Reduce JavaScript 函数上的 Eclipse 错误的最佳方法是什么?

javascript - 无法在 Chrome 的控制台中执行 "split"

javascript - 使用react-native-ble-plx包发送数据