2017-03-06 21 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 { 
    ...... 
} 

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