0

我正在实施 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 值的对象。默认情况下,当给定对象时,可以正确看到翻译。只有当我通过操作更新它时,应用程序才会刷新并且无法获得所需的结果。

什么可能导致我的应用程序刷新?

4

0 回答 0