未捕获(Promise)类型错误:无法读取未定义(...)的属性“createElement”

IT技术 javascript reactjs
2021-05-10 20:33:32

我需要将我的无状态功能组件重构为一个类。但是,当我这样做时,我不断收到一个错误,看起来 React 本身是未定义的。

import React from 'react';
import { Cell } from 'fixed-data-table';

const DataCell = ({rowIndex, columnKey, data, onMessageClicked, ...props}) => {
  return (
    <Cell {...props} onClick={onMessageClicked(data[rowIndex].Id)}>
      {data[rowIndex][columnKey]}
    </Cell>
  );
};

export default DataCell;

import { React, Component } from 'react';
import { Cell } from 'fixed-data-table';

class DataCell extends Component {

  onCellClicked() {
    this.props.onMessageClicked(this.props.data[this.props.rowIndex].Id);
  }

  render() {
    const {rowIndex, columnKey, data, ...props} = this.props;
    return (
      <Cell {...props} onClick={onCellClicked}>
        {data[rowIndex][columnKey]}
      </Cell>
    );
  }
}

export default DataCell;

bundle.js:43248 Uncaught (in promise) TypeError: Cannot read property 'createElement' of undefined(…)

当我走到那条线时,我看到

return _react.React.createElement(

我不明白。我该如何调试/修复这个问题?

我的这个应用程序的完整代码在这里,以防我发布的代码不相关。

谢谢!

3个回答

哦...

import { React, Component } from 'react';

需要是

import React, { Component } from 'react';

:)

OP 已经自己回答了这个问题,但没有理由,所以这就是原因!{直接引用自https://github.com/facebook/react/issues/2607#issuecomment-225911048 " }

import { React, Component } from 'react';

不正确,应该是

import React, { Component } from 'react';

没有名为 React 的命名导出。这很令人困惑,因为 React 是一个 CommonJS module,而且由于您使用的是 ES6 导入,Babel 尝试映射语义,但它们并不完全匹配。{ Component } 实际上是从 React 本身获取 Component 的,所以你可能只是:

import React from 'react'

并使用React.Component,而不是它是否容易混淆。

对我来说,在 TypeScript 中,解决方案是:

import * as React from 'react';