React Native + React I18next + React Navigation,navigationOptions更新问题

问题描述 投票:1回答:1

我正在使用react-i18nextreact-navigation

目前,当有需要时,我会单独用withNamespaces包装所有组件。问题是我无法保持titlestatic navigationOptions最新。它不会更新,无论我如何分配它:作为函数或属性对象。 navigation.setParams也没有更新它。

我尝试在Navigators上使用withNamespaces来使用screenProps,因为它完成了here,但在这种情况下我的调度NavigationActions没有效果。导航就不会发生。

我假设i18next HOC以某种方式阻止其子女接收params更新事件。我是否需要以其他方式初始化i18next以解决此问题?或者有没有办法迫使title中的navigationOptions更新?

javascript react-native react-navigation i18next react-i18next
1个回答
2
投票

好的,我想出了一个解决这个问题的简单方法。我创建了一个只返回所需字符串的组件,然后用withNamespaces将其包装起来并将其放入titlenavigationProperties道具中。工作良好。

这是一个示例代码。

标题组件

import React from 'react'
import PropTypes from 'prop-types'
import { withNamespaces } from 'react-i18next'
import { Text } from 'react-native'

const ScreenTitle = ({ path, t }) => <Text>{t(path)}</Text>

ScreenTitle.propTypes = {
  path: PropTypes.string.isRequired,
  t: PropTypes.func.isRequired,
}

export default withNamespaces()(ScreenTitle)

用法

static navigationOptions = () => {
  return {
    title: <ScreenTitle path="privacyPolicy:title" />,
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.