代码之家  ›  专栏  ›  技术社区  ›  Kishan Oza

在react native中设置动态“initialroutename”

  •  3
  • Kishan Oza  · 技术社区  · 6 年前

    问题很简单,我知道同一个问题有很多答案,但我有不同的答案 App.js 我几乎都试过了,但没有成功。

    所以我的 小精灵 看起来像这样

    import React, { Component } from 'react';
    import {
      Platform,
      StyleSheet,
      Text,
      View,
      StatusBar
    } from 'react-native';
    import { createStackNavigator  } from 'react-navigation';
    import { Header, Button, Spinner } from './src/components/comman';
    import SplashScreen from 'react-native-splash-screen';
    import LoginForm from './src/components/LoginForm';
    import SignupForm from './src/components/SignupForm';
    import Home from './src/components/Home';
    import ForgetPassword from './src/components/ForgetPassword';
    
    
    import { YellowBox } from 'react-native';
    YellowBox.ignoreWarnings(['Warning: isMounted(...) is deprecated', 'Module RCTImageLoader']);
    const App = createStackNavigator ({
      Login: { screen: LoginForm },
      Home: { screen: Home },
      Signup: { screen: SignupForm },
      ForgetPassword: { screen : ForgetPassword },
      },
      { 
      initialRouteName: 'Login',
      });
    
    export default App;
    

    现在我将登录状态存储在 AsyncStorage 在我 LoginForm.js 这样地

    .
    .
    AsyncStorage.setItem('isLoggedIn', 'true').then((a) => {
        this.onLoginSuccess(responseData.user_id);
    });
    .
    .
    

    所以现在我想 initialRouteName 基于我的本地存储元素。 简单如果 isLoggedIn true 然后 initialRouteName : Home 否则 initialRouteName : Login

    很简单但不怎么用 my App.JS

    请帮忙:)

    1 回复  |  直到 6 年前
        1
  •  6
  •   MoKhajavi75    6 年前

    如你所见 here :

    如果需要将initialroutename设置为prop,那是因为在呈现应用程序导航之前需要异步获取一些数据。另一种处理方法是使用switchnavigator,并在获取异步数据时显示屏幕,然后在必要时使用params导航到适当的初始路由。看见 docs 一个完整的例子。

    这是一个开放的 RFC

    更新

    看一看 here .

    你会发现更多的描述!