首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-loadable exception“需要一个字符串(对于内置组件)或一个类/函数(对于复合组件),但得到了:object”

react-loadable exception“需要一个字符串(对于内置组件)或一个类/函数(对于复合组件),但得到了:object”
EN

Stack Overflow用户
提问于 2018-08-02 12:31:10
回答 2查看 662关注 0票数 1

我正在使用react-loadable来拆分我的react代码。在基本用法下,它的功能正常,但当我自定义渲染输出时,它得到了一些异常,如下所示:

代码语言:javascript
复制
Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object.

我的代码是:

代码语言:javascript
复制
function Loading(props) {
  if (props.error) {
    return <div>Error! <button onClick={ props.retry }>Retry</button></div>;
  } else {
    return <div>Loading...</div>;
  }
}

const PipelineConversion = Loadable({
  loader: () => import('App/Reports/Components/PipelineConversion'),
  loading: <Loading />,
  render(loaded, props) {
    const PipConversion = loaded.default;
    return <PipConversion {...props} />;
  },
});

如果有人给我一些帮助或提示,我将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-08-02 18:24:16

您应该将一个函数传递给loading属性。您的Loading变量已经是一个函数,您不需要将它括在方括号<>中。

对于您的情况,这应该是可行的

代码语言:javascript
复制
Loadable({
  loading: Loading
});

或者在函数中使用它

代码语言:javascript
复制
Loadable({
  loading: () => <Loading />
});
票数 4
EN

Stack Overflow用户

发布于 2018-12-15 09:38:49

对于那些因为他们是服务器端渲染应用程序(服务器babel转译的文件)而导致上述错误的人来说,这可能是因为您正在使用airbnb babel-plugin-dynamic-import-node,而没有在.babelrc上将noInterop设置为false,如下所示:{ "plugins": [ ["dynamic-import-node", { "noInterop": true }] ] }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51645535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档