React未定义

the*_*tig 5 javascript ruby ruby-on-rails reactjs

我刚刚开始玩反应宝石,但我似乎遇到了问题.使用下面的代码,每当我被路由到我的反应示例页面时,我注意到在浏览器开发者控制台中,它会说"React未定义".它指的是这一行:

var react_example = React.createClass({

它位于react_example.js.jsx文件中(见下文).

的Gemfile

#... as well as other gems...
gem 'nokogiri'
gem 'react-rails' #<------ React
gem 'less-rails'
gem 'therubyracer'
gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git'
Run Code Online (Sandbox Code Playgroud)

development.rb

config.react.variant = :development
config.react.addons = true
Run Code Online (Sandbox Code Playgroud)

application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>React example</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag "react" %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

react_example.js.jsx

/** @jsx React.DOM */

var react_example = React.createClass({
  render: function () {
    return (
      <div>
        <h5>React</h5>
      </div>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

joa*_*lho 1

这实际上不是最好的方法,除非你真的想在应用程序之外加载 React。

该文档明确指出您应该在 application.js 清单文件中执行此操作:

//= require react
//= require react_ujs
//= require components
Run Code Online (Sandbox Code Playgroud)

提到“组件”的行取决于您实际放置反应组件文件的文件夹。