1

我正在使用react-i18nextreact-navigation

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

我尝试使用withNamespaces导航器自己来使用screenProps,就像它在这里完成的那样,但在这种情况下,我的派遣NavigationActions无效。导航只是没有发生。

我假设i18nextHOC 以某种方式阻止其子级接收参数更新事件。我是否需要以i18next其他方式初始化来解决这个问题?title或者有没有办法强制navigationOptions更新?

4

1 回答 1

2

好的,我想出了一个简单的方法来解决这个问题。我制作了一个只返回所需字符串的组件,并将其包装withNamespaces并放入titleprop of navigationProperties. 工作正常。

这是一个示例代码。

标题组件

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" />,
  }
}
于 2018-11-26T21:33:09.883 回答