未捕获的ReferenceError:未定义ReactDOM

IvR*_*mUm 43 javascript ruby ruby-on-rails ruby-on-rails-4 reactjs

所以我有Rails应用程序,我安装了react-rails gem,设置它并尝试运行测试应用程序.

新安装的,当我试图运行hello world程序时,这个错误变得很糟糕:

未捕获的ReferenceError:未定义ReactDOM

这是我的反应:

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);
Run Code Online (Sandbox Code Playgroud)

它保存在/app/assets/javascripts/components/test.js.jsx文件中.

Rails 4.2.4使用Ruby 2.2.3

Ada*_*dam 68

它可能是拼写问题 - 它ReactDOM不是ReactDom.

随着新发布的反应,这已经发生了变化

  • 难以置信的.花了一个小时撕掉我的头发做出错误的假设,为什么SystemJS(我正在使用的)告诉我ReactDom是未定义的.终于看到了这个答案,将拼写替换为ReactDOM,它有效......哦,小伙子. (3认同)

Ale*_* T. 28

ReactDOM从0.14.0起可用,所以你需要使用React.render(因为你有一个React版本0.13.3),

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

或升级您的React版本并包含ReactDOM

React的变化0.14


Kay*_*Kay 11

你必须导入它

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


Sep*_*älä 7

确保你已经包括在内react-dom.js.您可以从CDN添加它或使用您选择的js工具链.

安装React - 使用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>
Run Code Online (Sandbox Code Playgroud)