【问题标题】:Execute code before createStackNavigator()在 createStackNavigator() 之前执行代码
【发布时间】:2020-05-12 19:58:41
【问题描述】:

案例是更改语言,函数setlanguage从asyncstorage检索语言代码并设置该语言,此执行与createStackNavigator,createDrawerNavigator等其他初始化同时运行,因此更改的语言字符串不适用于抽屉等导航组件,如何我在 createStackNavigator 之前执行设置的语言?所以语言字符串是预先存在的。

我已经尝试在 home 组件的 componentDidMount 中手动更改组件的导航选项,但是没有用。

  const lang = await AsyncStorage.getItem('selectedLangCode');

  if (lang == null) {
    try {
      await AsyncStorage.setItem('selectedLangCode', 'en');
    } catch (e) {
      console.log('not able to store language');
    }
  }
  if (lang) {
    await strings.setLanguage(lang);
  }

在 App.js 中有导航代码

  createDrawerNavigator(...components...))

我在 app.js 导入根文件(index.js)之前导入了 languageSetup 函数 执行仍然是同步的,因此在 languageSetup 运行时 createDrawerNavigator 将组件加载到抽屉中。 所以在抽屉里,语言翻译不适用

【问题讨论】:

    标签: react-native react-native-android


    【解决方案1】:

    你可以使用这个逻辑

    从“react-native”导入 {I18nManager}

    I18nManager.isRTL ?'right':'left'

    【讨论】:

      猜你喜欢
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      相关资源
      最近更新 更多