2016-04-15 55 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。这当然不能很好地与开箱即用的反应相结合。