如何在createSwitchNavigator中设置动态initialRouteName?

devbeans

我想设置身份验证流程,但是我没有从SecureStore获取数据

Navigator.js

const AppSwitchNavigator = createSwitchNavigator(
  {
    SignedOut,
    SignedIn
  },
  {
    initialRouteName: AsyncStorage.getItem('isSignedIn') == 'true' ? 'SignedIn' : 'SignedOut'
  }
)
export default createAppContainer(AppSwitchNavigator)

Login.js

  verifyOtp = async code => {
    const { phone } = this.state

    var response = await Axios.post(
      `https://api.msg91.com/api/v5/otp/verify?mobile=91${phone}&otp=${code}&authkey=273478A4j3qbKgj5cbda6ba`
    )

    if (response.data.type == 'error') {
      this.setState({
        errMsg: response.data.message
      })
    } else {
      await SecureStore.setItemAsync('isSignedIn', 'true')
      this.props.navigation.navigate('Home')
    }
  }

来自console.log(SecureStore.getItemAsync('isSignedIn'))的响应;

undefined
true
true
undefined
true
true
undefined
true
true

现在由于initialRouteName没有得到isSignedIn的价值,它总是保留在SignedOut页面即登录页面上。

高拉夫·罗伊(Gaurav Roy)

这是一个几乎每个人都面临的经典案例,因此,根据react navigation rn-docs的文档,他们总是说最好的是拥有3页,并将初始页面加载为初始屏幕,并在splashD的componentDidMount方法内屏幕上执行异步存储操作并进行相应导航。

像这样:

 export default createAppContainer(
      createSwitchNavigator(
        {
          AuthLoading: AuthLoadingScreen,
          App: AppStack,
          Auth: AuthStack,
        },
        {
          initialRouteName: 'AuthLoading',
        }
      )
    );

和在AUthLoading中

class AuthLoadingScreen extends React.Component {
  componentDidMount() {
    this._bootstrapAsync();
  }

  // Fetch the token from storage then navigate to our appropriate place
  _bootstrapAsync = async () => {
    const userToken = await AsyncStorage.getItem('userToken');

    // This will switch to the App screen or Auth screen and this loading
    // screen will be unmounted and thrown away.
    this.props.navigation.navigate(userToken ? 'App' : 'Auth');
  };

  // Render any loading content that you like here
  render() {
    return (
      <View>
        <ActivityIndicator />
        <StatusBar barStyle="default" />
      </View>
    );
  }
}

希望它清楚

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何在* ngFor中设置动态ID?

来自分类Dev

如何在JTable中动态设置RowHeight

来自分类Dev

如何在结构中设置动态键名?

来自分类Dev

如何在动态数组中设置订阅

来自分类Dev

在反应中,我如何在 ExpansionPanel 中动态设置 defaultExpanded

来自分类Dev

如何在动态SQL查询中设置表名?

来自分类Dev

如何在pluoplad-angular-directive中设置动态url?

来自分类Dev

如何在Go中设置动态结构字段?

来自分类Dev

如何在翻新(Android)中动态设置标题

来自分类Dev

如何在WordPress中设置动态的“ home”和“ siteurl”?

来自分类Dev

如何在Django模板中设置动态默认textarea数据?

来自分类Dev

如何在Blade(Laravel)中动态设置只读字段

来自分类Dev

如何在ngtable中设置动态数据标题(角度插件)

来自分类Dev

如何在C#中动态设置按钮图像的大小?

来自分类Dev

如何在引导导航栏中动态设置活动类?

来自分类Dev

如何在XAML中动态设置和获取标签?

来自分类Dev

如何在Kendo模板中动态设置列

来自分类Dev

如何在SVG中动态设置坐标点

来自分类Dev

如何在javascript ..中动态设置jquery multiselect选项的selectedText?

来自分类Dev

如何在Spring DSL中动态设置CamelContext ID?

来自分类Dev

如何在HTTP代理Servlet中动态设置参数targetURi

来自分类Dev

如何在灯具中设置动态模型属性?

来自分类Dev

如何在reduce函数中动态设置键

来自分类Dev

如何在React native中动态设置图像的来源?

来自分类Dev

如何在JSP页面中动态设置<title>

来自分类Dev

如何在vuejs应用中设置动态基本URL?

来自分类Dev

如何在Vue JS中设置动态样式属性

来自分类Dev

如何在python中动态设置ssh隧道?

来自分类Dev

如何在GridLayout中动态设置按钮的文本?

Related 相关文章

  1. 1

    如何在* ngFor中设置动态ID?

  2. 2

    如何在JTable中动态设置RowHeight

  3. 3

    如何在结构中设置动态键名?

  4. 4

    如何在动态数组中设置订阅

  5. 5

    在反应中,我如何在 ExpansionPanel 中动态设置 defaultExpanded

  6. 6

    如何在动态SQL查询中设置表名?

  7. 7

    如何在pluoplad-angular-directive中设置动态url?

  8. 8

    如何在Go中设置动态结构字段?

  9. 9

    如何在翻新(Android)中动态设置标题

  10. 10

    如何在WordPress中设置动态的“ home”和“ siteurl”?

  11. 11

    如何在Django模板中设置动态默认textarea数据?

  12. 12

    如何在Blade(Laravel)中动态设置只读字段

  13. 13

    如何在ngtable中设置动态数据标题(角度插件)

  14. 14

    如何在C#中动态设置按钮图像的大小?

  15. 15

    如何在引导导航栏中动态设置活动类?

  16. 16

    如何在XAML中动态设置和获取标签?

  17. 17

    如何在Kendo模板中动态设置列

  18. 18

    如何在SVG中动态设置坐标点

  19. 19

    如何在javascript ..中动态设置jquery multiselect选项的selectedText?

  20. 20

    如何在Spring DSL中动态设置CamelContext ID?

  21. 21

    如何在HTTP代理Servlet中动态设置参数targetURi

  22. 22

    如何在灯具中设置动态模型属性?

  23. 23

    如何在reduce函数中动态设置键

  24. 24

    如何在React native中动态设置图像的来源?

  25. 25

    如何在JSP页面中动态设置<title>

  26. 26

    如何在vuejs应用中设置动态基本URL?

  27. 27

    如何在Vue JS中设置动态样式属性

  28. 28

    如何在python中动态设置ssh隧道?

  29. 29

    如何在GridLayout中动态设置按钮的文本?

热门标签

归档