视图加载时如何更改导航栏标题

111*_*110 5 reactjs react-native react-redux react-native-router-flux

我需要读取一个值,并用它在导航栏中设置标题。
我正在使用react-native-router-flux,我也使用redux。
我导航查看设置语言和触发redux动作的位置。
所有视图都接收新状态,并且可以在render()方法中调用:

console.log(this.props.language.language)
Run Code Online (Sandbox Code Playgroud)

这是通过redux设置的。我想更改导航栏标题,例如:

Actions.refresh({title: I18n.t('main', {locale: this.props.language.language})})
Run Code Online (Sandbox Code Playgroud)

但是,这会使应用程序变慢,并且无法正常工作。
但是,如果不使用render方法,则不知道将其放在何处。

Tom*_*ers 0

您不应该在render方法中修改状态 - 这将导致状态更改的无限循环,从而导致重新渲染。

相反,您应该将其放入生命周期方法中:

componentDidMount () {
  Actions.refresh(...)
}
Run Code Online (Sandbox Code Playgroud)

当组件首次安装时将被触发。