Подтвердить что ты не робот

Неподготовлено (в обещании) TypeError: Не удается прочитать свойство "createElement" из undefined (...)

Мне нужно было реорганизовать мой функциональный компонент без гражданства в класс. Когда я это сделал, я все равно получаю сообщение об ошибке, когда он выглядит так: "Реакт" - undefined.

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(

Я не понимаю. Как мне отладить/исправить это?

Мой полный код для этого приложения здесь в случае, если код, который я публикую, каким-то образом не связан.

Спасибо!

4b9b3361

Ответ 1

О...

import { React, Component } from 'react';

должно быть

import React, { Component } from 'react';

:)

Ответ 2

ОП ответил на вопрос сам, но без причины, поэтому вот причина! {Прямо цитируя https://github.com/facebook/react/issues/2607 # issuecomment-225911048 "}

import { React, Component } from 'react';

неверно, должно быть

import React, { Component } from 'react';

Именованный экспорт не называется React. Это запутанно, потому что React - это модуль CommonJS, и, поскольку вы используете импорт ES6, Babel пытается сопоставить семантику, но они точно не совпадают. {Component} на самом деле захватывает компонент из React, поэтому вы можете просто:

import React from 'react'

и используйте React.Component, если это менее запутанно.

Ответ 3

Для меня в TypeScript решение было:

import * as React from 'react';