元素类型无效:应为字符串(对于 built-in 组件)或 class/function(对于复合组件)但得到:符号

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: symbol

我正在尝试将 lazy Loading 用于我的应用程序。

index.js

import React, { Suspense , lazy , Component } from 'react';
import ReactDOM from 'react-dom';
import 'index.scss';
import SomeComponent from './someComponent.js';
import * as serviceWorker from 'serviceWorker';

ReactDOM.render(<SomeComponent />, document.getElementById('root'));
serviceWorker.unregister();

一些组件index.js文件

import React, { Suspense , lazy , Component } from 'react';
import { BrowserRouter } from 'react-router-dom';
const Header = lazy(() => import('./_header'));

class SomeComponent extends Component {
  render() {
    return (
      <BrowserRouter>
          <React.Fragment>
            <Suspense>
              <Header />
            </Suspense>
          </React.Fragment>
      </BrowserRouter>
    );
  }
}

export default SomeComponent;

header index.js 文件

import React, { Component } from 'react';
import './index.scss';

class Header extends Component {
    render() {
        return (
            <h1>Header</h1>
        );
    }
}
export default Header;

但是我遇到了这个错误:

元素类型无效:应为字符串(对于 built-in 组件)或 class/function(对于复合组件)但得到:符号。

我的反应版本是 v16.6.3.

这是一个非常简单的示例,应该可以使用类似的依赖项。

我建议确保 import('./_header') 解析为正确的模块,以再次检查是否存在默认导出并且它是 React 组件类型。此外,确保悬念组件的 { fallback } 也是组件类型。

Suspense and lazy 可在以下版本中使用:

"react": "^16.6.3"
"react-dom": "^16.6.3"

此错误与未正确升级的 react-dom 有关!