我正在实施Yahoo React-Intl来本地化我的应用程序。为了做到这一点,我必须使用Localizer包装ROOT,如下所示:
const Root = React.createClass({
childContextTypes: {
refresh: React.PropTypes.func
},
getChildContext() {
return {
refresh: () => this.forceUpdate()
}
},
render() {
let { language, messages } = this.props;
return (
<Provider store={store }>
<IntlProvider locale="en" messages= { messages } >
<Router history={browserHistory}>
</Router>
</IntlProvider>
</Provider>
)
}
}
function mapStateToProps(state) {
return {
language: state.currentLanguage.language,
messages: state.currentLanguage.messages
};
}
export default connect(mapStateToProps, {})(Root)
使用&#34;消息&#34;是一个包含键值转换映射的JSON对象。
我的问题是我必须使其动态化,以便用户可以选择更改语言。我创建了一个Action / Reducer组合,以便在应用程序状态中更改分配给消息prop的对象。但是,当我调用操作并向消息提供新对象时,整个页面将刷新,状态将恢复为初始值。
默认情况下,消息是一个空变量,并为其分配一个包含中文字符的id值的对象。默认情况下,在给定对象时,可以正确查看翻译。只有当我通过操作更新它时,应用程序才会刷新,并且无法获得所需的结果。
可能导致我的应用程序刷新的原因是什么?