我正在实施 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)
“消息”是一个包含键值转换映射的 JSON 对象。
我的问题是我必须使这个动态,以便用户可以选择更改语言。我创建了一个 Action/Reducer 组合,以便在应用程序状态中更改分配给 messages 属性的对象。但是,当我调用该操作并将消息提供一个新对象时,整个页面都会刷新,并且我的状态会恢复到初始值。
默认情况下,消息是一个空变量,并被分配一个包含中文字符的 id 值的对象。默认情况下,当给定对象时,可以正确看到翻译。只有当我通过操作更新它时,应用程序才会刷新并且无法获得所需的结果。
什么可能导致我的应用程序刷新?