Uncaught ReferenceError: ReactDOM is not defined

2020-05-18 05:07发布

问题:

So i have Rails applications, i installed react-rails gem, set it up and try to run test application.

Freshly installed, when i tryed to run hello world program, this error hapened:

Uncaught ReferenceError: ReactDOM is not defined

This is my react:

var HelloWorld = React.createClass({
  render: function() {
    return (
      <p>
        Hello, <input type="text" placeholder="Your name here" />!
        It is {this.props.date.toTimeString()}
      </p>
    );
  }
});

setInterval(function() {
  ReactDOM.render(
    <HelloWorld date={new Date()} />,
    document.getElementById('example')
  );
}, 500);

Its saved inside /app/assets/javascripts/components/test.js.jsx file.

Rails 4.2.4 With Ruby 2.2.3

回答1:

ReactDOM available since version 0.14.0, so you need to use React.render (because you have a React version 0.13.3) instead,

setInterval(function() {
  React.render(
    <HelloWorld date={new Date()} />,
    document.getElementById('example')
  );
}, 500);

or upgrade your React version and include ReactDOM

Changes in React 0.14



回答2:

It may be the spelling issue - it is ReactDOM, not ReactDom.

This has changed over time with the new release of React



回答3:

You have to import it

import ReactDOM from 'react-dom';


回答4:

Make sure that you've included react-dom.js. You can add it from CDN or use js toolchain of your choice.

Installing React - using a CDN

<script src="https://unpkg.com/react@15/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.js"></script>