为了账号安全,请及时绑定邮箱和手机立即绑定

antdesign的modal组件无法访问IntlProvider,如何解决?

antdesign的modal组件无法访问IntlProvider,如何解决?

米琪卡哇伊 2018-10-24 11:19:05
问题描述我正在用dva,antdesign和react-intl框架开发一个单页应用程序,并且使用react-intl实现国际化。我在最外层的index.js用 <IntlProvider>将所有的组件都包裹起来,这样所有的子组件都能访问到intl对象。问题出现的环境背景及自己尝试过哪些方法绝大部分页面和组件都工作正常,但是antdesign的Modal所显示的内容,用react-intl的<FormattedMessage id="message.id"/>之后报错,错误信息是:[React Intl] Could not find required intl object. <IntlProvider> needs to exist in the component ancestry.我通过Chrome的React插件观察了组件的结构,出现此问题的原因是Model组件是写在最外面(和App平级的)的这样就不是<IntlProvider>的子组件了。我不想在每个用到Modal的组件或者页面里再次写一遍<IntlProvider>,请问有什么好的解决办法?
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

谢谢 @厦冰 。我在github上也问了,得到的答案是可以用injectIntl把我的那个Component封装一下,然后调用intl.formatMessage() API。我试了可以工作,原因应该是<FormattedMessage>是在Modal render的时候才求值的,但是调用formatMessage() API的话这个在component 执行的时候就已经求值了.

查看完整回答
反对 回复 2018-10-24
  • 1 回答
  • 0 关注
  • 2089 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信