React Native 导航器的本地化

米德梅特

我正在构建一个应用程序,用户在第一次启动应用程序时会被提示选择他们的语言。然后使用 AsyncStorage 将语言存储在本地。

每次应用程序启动时,都会从存储中检索语言并将其保存到global.lang变量中以供所有组件使用:

AsyncStorage.getItem('settings', (err, item) => {
  global.lang = item.lang; 
});

当我在任何组件global.langrender()方法中使用变量时,一切似乎都没问题。但是,在初始化导航器时尝试使用相同的变量时遇到了麻烦:

const TabNavigator = createBottomTabNavigator(
 {
    Home: {
      screen: HomeScreenNavigator,
      navigationOptions:{
        title: strings['en'].linkHome,  --> this works
      }
    },
    News: {
      screen: NewsScreen,
      navigationOptions:{
        title: strings[global.lang].linkNews,  --> this fails
      }
    }
});

我相信这是因为在构建导航器时未从 AsyncStorage 检索该值。如果我global.lang手动设置(例如global.lang = 'en';)它似乎没问题,但当我尝试从存储中检索它时就不行了。

有什么我想念的吗?我可以使用默认语言初始化导航器,然后根据检索到的值更改标题吗?

任何帮助将不胜感激。

瓦尔达XD

导航器是在应用程序启动时构建的。因此,您需要使用一些占位符文本并使用此处描述的方法,根据屏幕键更改所有屏幕标题...

或者......这听起来很疯狂,我从未尝试过。但是您可以使用加载屏幕来检索语言设置。然后...通过条件渲染你“渲染”一个导航器组件。不知道它是否会以相同的方式工作,但您可以尝试一下。在我为此目的刚刚创建的一些代码下方

export default class MainComponent extends React.Component {
constructor(props) {
    super(props);
    this.state = { hasLanguage:false};}


    componentDidMount(){
        this.retrieveLanguage()
    }

    async retrieveLanguage(){
        //await AsyncStorage bla bla bla

        //then

        this.setState({hasLanguage:true})
    }

render() {
    return (
             {
                this.state.hasLanguage?
                <View>
                        //this is a view that is rendered as a loading screen
                </View>:
                <Navigator/>//this will be rendered, and hence, created, when there is a language retrieved

             }
      );
   }
}   

再次。我不知道 react navigation 是否会在 render 处创建导航器。如果是这样的话。当它创建一个导航器时,应该在那里使用 languaje 。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React Native:导入“本地化字符串”对象时未定义不是对象

来自分类Dev

在React-Native中从Drawer在Android上引用导航器

来自分类Dev

React Native:导航器弹出窗口上的更新视图(ListView)

来自分类Dev

如何隐藏React Native导航器的后退按钮

来自分类Dev

如何在React Native导航器中禁用向后滑动

来自分类Dev

React Native-导航器和标签栏集成

来自分类Dev

react-native-导航器和工具栏

来自分类Dev

React Native中每种用户类型的差异抽屉导航器

来自分类Dev

如何在React Native中使用抽屉导航器?

来自分类Dev

React-Native-标签导航器嵌套在抽屉内

来自分类Dev

Redux 中的 React-native 嵌套导航器

来自分类Dev

使用 React Native 的未定义导航器

来自分类Dev

嵌套在堆栈导航器中的React Native选项卡导航器

来自分类Dev

React Native,导航

来自分类Dev

本地存储-React Native

来自分类Dev

React Native - 无法获取已通过导航器(从堆栈导航器到抽屉导航器)传递的参数。接收:对象未定义

来自分类Dev

React Native-如何将本地化与react-navigation结合使用以使翻译可以跨屏幕访问?

来自分类Dev

React Native:导航器场景更改未传递上下文

来自分类Dev

如何在React Native导航器中禁用向后滑动手势

来自分类Dev

react native:与redux一起使用的最佳导航器/路由器组件

来自分类Dev

如何在React Native中将组件正确导入到我的导航器中?

来自分类Dev

如何设计React-Native Android应用程序的导航器结构?

来自分类Dev

使用React-Native和Redux在Actions中访问导航器

来自分类Dev

可触摸的不透明度在堆栈导航器屏幕中不响应-React Native

来自分类Dev

如何在React Native v.5(不是v.4)中嵌套多个导航器

来自分类Dev

React Native-如何在导航器中将函数传递到堆栈屏幕?

来自分类Dev

React-Native Stack导航器以相同的initialRouteName返回上一个屏幕

来自分类Dev

在React Native v.5中离开某个屏幕时,如何隐藏底部的标签导航器?

来自分类Dev

React Native:导航器场景更改未传递上下文

Related 相关文章

  1. 1

    React Native:导入“本地化字符串”对象时未定义不是对象

  2. 2

    在React-Native中从Drawer在Android上引用导航器

  3. 3

    React Native:导航器弹出窗口上的更新视图(ListView)

  4. 4

    如何隐藏React Native导航器的后退按钮

  5. 5

    如何在React Native导航器中禁用向后滑动

  6. 6

    React Native-导航器和标签栏集成

  7. 7

    react-native-导航器和工具栏

  8. 8

    React Native中每种用户类型的差异抽屉导航器

  9. 9

    如何在React Native中使用抽屉导航器?

  10. 10

    React-Native-标签导航器嵌套在抽屉内

  11. 11

    Redux 中的 React-native 嵌套导航器

  12. 12

    使用 React Native 的未定义导航器

  13. 13

    嵌套在堆栈导航器中的React Native选项卡导航器

  14. 14

    React Native,导航

  15. 15

    本地存储-React Native

  16. 16

    React Native - 无法获取已通过导航器(从堆栈导航器到抽屉导航器)传递的参数。接收:对象未定义

  17. 17

    React Native-如何将本地化与react-navigation结合使用以使翻译可以跨屏幕访问?

  18. 18

    React Native:导航器场景更改未传递上下文

  19. 19

    如何在React Native导航器中禁用向后滑动手势

  20. 20

    react native:与redux一起使用的最佳导航器/路由器组件

  21. 21

    如何在React Native中将组件正确导入到我的导航器中?

  22. 22

    如何设计React-Native Android应用程序的导航器结构?

  23. 23

    使用React-Native和Redux在Actions中访问导航器

  24. 24

    可触摸的不透明度在堆栈导航器屏幕中不响应-React Native

  25. 25

    如何在React Native v.5(不是v.4)中嵌套多个导航器

  26. 26

    React Native-如何在导航器中将函数传递到堆栈屏幕?

  27. 27

    React-Native Stack导航器以相同的initialRouteName返回上一个屏幕

  28. 28

    在React Native v.5中离开某个屏幕时,如何隐藏底部的标签导航器?

  29. 29

    React Native:导航器场景更改未传递上下文

热门标签

归档