我使用react-translated
作为React应用程序的翻译提供商,index.jsx
render
方法为:
ReactDOM.render(
<TranslationProvider language={store.getState().language} translation={translation}>
<MuiThemeProvider theme={theme}>
<Provider store={store}>
<Routes/>
</ Provider>
</MuiThemeProvider>
</TranslationProvider>,
document.getElementById('root')
);
然后,我通过调度操作更新全局状态的语言。。。它可以工作(语言更改(,但这个render
不会再次调用,我的应用程序中的文本也不会切换到其他语言。当state
在store
中发生变化时,它不应该重新发送吗?
如果存在props更改,则需要使用组件生命周期方法componentWillReceiveProps
来侦听状态更改。
例如
this.state ={
language: 'defaultlanguage'
}
componentWillReceiveProps(nextProps){
if(nextProps.language !== this.state.props){
this.setState({
language: nextProps.language
})
}
}