2017-03-06 44 views
0

我使用react-redux-i18n,我有更新I18n.t helper反应 - 终极版 - 区域设置的I18n更新I18n.t帮手

问题,我有一个按钮调用一个调度的react-redux-i18n的setLocale的一个动作:

<FlatButton 
     label={languageToDisplay} 
     labelStyle={styles.buttonLabel} 
     onClick={() => this.props.actions.setLanguage(languageToDisplay)} 
     style={styles.button} 
     /> 

哪个调用这个函数:

export default function setLanguage(language: string) { 
    return async (dispatch) => { 
    dispatch(setLocale(language)); 
    }; 
} 

虽然它确实改变了I18n._locale,它不会重新渲染和反式提供文字。任何人有想法如何解决?

我使用react-redux-i18n因为我喜欢翻译react-native方式是:I18n.t(...)

它的清洁,并没有强制怪异的成分只为翻译如<FormationMessage /><Translate />

如果有人知道如何修复它或有另一个图书馆在相同的翻译风格作为react-redux-i18n,请让我知道:)

回答

1

找到了解决此问题的方法:

import React, { Component } from 'react'; 
import { connect } from 'react-redux'; 

@connect(state => ({ 
    i18n: state.i18n, // <= this makes your component rerender on language change 
}), dispatch => ({ dispatch })) 
class SomeClass extends Component { 
    ...... 
} 

如果您有更好的方法,告诉我。