ReactDOM.render无法读取属性

tra*_*ock 3 reactjs react-bootstrap react-dom

Index.js:

import React from 'react'; 
import buttonsInstance from 'components/button-instance';
import {ReactDOM} from 'react-dom';

ReactDOM.render(buttonsInstance, document.getElementById('app'));
Run Code Online (Sandbox Code Playgroud)

button-instance.js

import React from 'react';
import {ButtonToolbar} from 'react-bootstrap';
import {Button} from 'react-bootstrap';

const buttonsInstance = (
  <div>
    <ButtonToolbar>
      <Button bsStyle="primary" bsSize="large">Large button</Button>
      <Button bsSize="large">Large button</Button>
    </ButtonToolbar>
    <ButtonToolbar>
      <Button bsStyle="primary">Default button</Button>
      <Button>Default button</Button>
    </ButtonToolbar>
    <ButtonToolbar>
      <Button bsStyle="primary" bsSize="small">Small button</Button>
      <Button bsSize="small">Small button</Button>
    </ButtonToolbar>
    <ButtonToolbar>
      <Button bsStyle="primary" bsSize="xsmall">Extra small button</Button>
      <Button bsSize="xsmall">Extra small button</Button>
    </ButtonToolbar>
  </div>
);
Run Code Online (Sandbox Code Playgroud)

我正在尝试reactbootstraphttps://react-bootstrap.github.io/components.html使用。

然后我得到了错误:

Uncaught TypeError: Cannot read property 'render' of undefined
    at Object.<anonymous> (index.js:9)
    at __webpack_require__ (bootstrap 571b93c…:657)
    at fn (bootstrap 571b93c…:85)
    at Object.<anonymous> (log-apply-result.js:30)
    at __webpack_require__ (bootstrap 571b93c…:657)
    at module.exports (bootstrap 571b93c…:706)
    at bootstrap 571b93c…:706
Run Code Online (Sandbox Code Playgroud)

我使用webpackwebpack-dev-serveres6。我reactreact-dom是最新的。我不知道如何解决这个问题。

May*_*kla 5

ReactDOM像这样导入:

import ReactDOM from 'react-dom';
Run Code Online (Sandbox Code Playgroud)

它是一个默认的导入(导入完整的软件包以使用该方法的不同方法)而不是命名的import,这就是为什么会出现错误的原因:

无法读取未定义的属性“ render”

或者,您可以像这样直接导入render方法react-dom

import {render} from 'react-dom';
Run Code Online (Sandbox Code Playgroud)

现在用于render直接渲染组件:

render(buttonsInstance, document.getElementById('app'));
Run Code Online (Sandbox Code Playgroud)

  • @JSantosh,您需要在tsconfig.json文件中添加`“ allowSyntheticDefaultImports”:true (3认同)