2016-04-15 107 views
7

我在我的應用程序中支持多種語言,並使用React-intl。 我有Redux中間件,我打電話給服務器,並在錯誤的情況下,我想在用戶界面上顯示一個錯誤。在Redux中間件中使用React-intl翻譯的消息

我知道我可以這樣做:

1)派遣從中間件的行動,消息鍵:

{type: SHOW_ERROR, message: 'message_error_key'} 

2)在我的陣營組件使用:

<FormattedMessage id={this.props.message_error_key}/> 

但是有沒有辦法用中間件的已經翻譯的消息發送一個動作?

{type: SHOW_ERROR, message: [translated_message_should_be_here]} 

回答

2

我不認爲你可以直接從中間件訪問formatMessage因爲它似乎只能通過injectIntl暴露部件。您可能會提出一個問題來描述您的用例,也許可以考慮一個普通的JavaScript API來訪問組件外部的formatMessage(),但現在看起來似乎不可用。

0

當試圖初始化Reducer的默認狀態爲本地化的消息時,我遇到了一個類似的問題。似乎在組件之外使用react-intl的任何部分都不是API中已經考慮過的。兩個想法:

  1. 進樣intl到下面<IntlProvider>的自定義組件,這使得它在componentWillReceiveProps可通過一個應用廣泛的單。接下來從其他地方訪問該單身人士並使用intl.formatMessage等。

  2. 可以使用React-intl是其中一部分的組件來實現所需的功能。在這種情況下,可以考慮yahoo/intl-messageformatyahoo/intl-format-cache。這當然不能很好地與開箱即用的反應相結合。