React Native + React I18следующий + React Navigation, проблема обновления Navigation - PullRequest
0 голосов
/ 26 ноября 2018

Я использую react-i18next и react-navigation.

В настоящее время я обертываю все свои компоненты withNamespaces индивидуально, когда это необходимо.Проблема в том, что я не могу обновлять title в static navigationOptions.Он просто не обновляется, независимо от того, как я его назначаю: как функцию или как объект свойств.navigation.setParams также не обновляет его.

Я пытался использовать withNamespaces на самих навигаторах, чтобы использовать screenProps, как это делается здесь , но в этом случае мойотправлено NavigationActions не имеет никакого эффекта.Навигация просто не происходит.

Я предполагаю, что i18next HOC каким-то образом мешает его дочерним элементам получать события обновления параметров.Нужно ли инициализировать i18next другим способом, чтобы решить эту проблему?Или есть способ заставить title в navigationOptions обновить?

1 Ответ

0 голосов
/ 27 ноября 2018

Хорошо, я нашел простой способ решить эту проблему.Я сделал компонент, который просто возвращает требуемую строку, и обернул ее withNamespaces и поместил в title prop 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" />,
  }
}
...