Lingui:错误:对象作为 React 子对象无效(找到:带有键 {id} 的对象)

时间:2021-01-18 08:19:47

标签: reactjs material-ui linguijs

根据 the documentation 我们可以使用 t 宏代替 i18n._() 调用。对应的宏变换示例:

import { t } from "@lingui/macro"
const message = t`Hello World`

// ↓ ↓ ↓ ↓ ↓ ↓

import { i18n } from "@lingui/core"
const message = i18n._(/*i18n*/{
  id: 'Hello World',
})

所以我应该可以写:

  <TextField label={t`Login`}/>

其中 TextField 是 Material UI 组件。

但这行不通。相反,我收到了一个运行时错误:

<块引用>

错误:对象作为 React 子对象无效(找到:带有键的对象 {id}).

好像 t 被转换为对象

{
  id: 'Login',
}

而不是 i18n._(...) 函数调用。

我无法在此处或 project's pages 中找到任何相关信息。

1 个答案:

答案 0 :(得分:0)

回答我自己。

很难说出真正的原因,但在我根据 Sergio Moreno 提供的 sandbox 更新代码后,它现在可以工作了。

基本上 arrays3 = [np.loadtxt(name3,ndmin=2) for name3 in files3] 应该以不同的方式初始化。具体:

是:

I18nProvider

变成:

<I18nProvider language={language} catalogs={i18nCatalogs}>

查看问题了解更多详情:https://github.com/lingui/js-lingui/issues/946