【发布时间】:2017-10-10 08:30:32
【问题描述】:
我正在为我的应用程序实现多语言功能,但在更改反应导航标题标题时遇到了困难(使用反应导航)。我不想在每个屏幕中调用 setParams 来根据所选语言更改标题。
这是我的堆栈:
Home -> Settings -> App Settings -> Language Settings.
我在Language Setting 屏幕上选择语言。按导航栏上的默认返回按钮返回后,App Settings 屏幕中的static navigationOptions 被调用(这是我根据当前语言设置标题的地方)即使我不调用 setParams(),我不知道为什么它没有重新渲染 => 标题没有改变。
有没有办法解决这个问题?
嗨@JavaEvgan 这是我的代码:
<AppNavigator navigation={addNavigationHelpers({
dispatch: this.props.dispatch,
state: this.props.navigationState
})}/>
连接到 redux 商店
export default connect(state => ({
navigationState: state.navigationState,
}), dispatch => ({
dispatch: dispatch
}))(MainLayoutContainer)
【问题讨论】:
-
你不使用 Redux 和 react 吗?您可以在 reducer 中创建 initialState 并根据选择的语言选项进行更改。
-
是的,我正在使用 react-redux。我可以根据语言更改屏幕的内容,但反应导航不会改变。即使 redux 存储发生变化,React-navigation 标头也不会重新渲染
-
您能否提供您的导航组件的代码我相信您可能正在使用带有道具的构造函数而不是来自 Redux 的道具。
-
我刚刚添加了有问题的代码。我可以向
navigationState减速器发送操作以执行push和pop进行导航。 -
那么你的 AppNavigator 组件呢,它看起来怎么样?
标签: javascript reactjs react-native react-redux react-navigation