如何解决<Trans> 的玩笑错误:您忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入
错误:未捕获 [错误:元素类型无效:应为字符串 (对于内置组件)或类/函数(对于复合 组件)但得到:未定义。您可能忘记导出您的 来自它定义的文件的组件,或者你可能混淆了 默认导入和命名导入。
这是我在开玩笑地运行测试时遇到的错误。正在测试的 React 组件使用来自 <Trans>
的 react-i18next
。当我评论那部分代码时,测试按预期工作。
解决方法
显示的错误非常非常非常想念领先。
就我而言,它缺少 <Trans>
的模拟。虽然我对 react-i18next
进行了模拟,但由于我有很多组件需要测试,其中一些使用 <Trans>
,而另一些没有,我复制/粘贴测试文件但完全忘记检查关于模拟。在我将 <Trans>
替换为 material-ui 中的 <Typography>
之类的文本后,我花了几个小时才注意到它...
jest.mock('react-i18next',() => ({
withTranslation: () => (Component: any) => {
Component.defaultProps = {...Component.defaultProps,t: (children: any) => children};
return Component;
},Trans: ({children}: any) => children,// this line was missing (() => jest.fn() might also work)
}));
希望它能为你们中的一些人节省一些时间:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。