2016-02-11 80 views
1

首先,这不是重复的!这是同样的 '没有定义' 错误,但准确位于github上(https://github.com/reactjs/react-rails)指导,仍然没有工作Rails - 未定义反应

的Gemfile:

gem 'rails' 
gem 'pg', '~> 0.15' 
gem 'sass-rails' 
gem 'uglifier' 
gem 'coffee-rails' 
gem 'therubyracer' 
gem 'bootstrap-sass' 
gem 'jquery-rails' 
gem 'jquery-ui-rails' 
gem 'font-awesome-sass' 
gem 'sprockets-rails' 
gem 'react-rails' 
gem 'turbolinks' 
gem 'jbuilder', '~> 2.0' 
gem 'sdoc', '~> 0.4.0', group: :doc 

的application.js:

//= require jquery 
//= require jquery_ujs 
//= require jquery-ui 
//= require bootstrap-sprockets 
//= require react 
//= require react_ujs 
//= require components 

application.html:

<!DOCTYPE html> 
<html> 
<head> 
    <title>project</title> 
    <%= stylesheet_link_tag 'application', media: 'all' %> 
    <%= javascript_include_tag 'application' %> 
    <%= javascript_include_tag 'react' %> 
    <%= csrf_meta_tags %> 
</head> 
<body> 

components/app.js.jsx:

// var React = window.ReactRailsUJS; 

var Hello = React.createClass({ 
    render: function() { 
     return (
      <p>Hello</p> 
     ); 
    } 
}); 

ReactDOM.render(
    <Hello />, 
    document.getElementById("react-msg") 
); 

console.log(1); 

HTML文件:

<style type="text/css"> 
    h1, h3 { 
    font-weight: bold; 
    } 
</style> 

<div class="container"> 
    <h1>React JS</h1> 
    <h3 id="react-msg"></h3> 
</div> 

development.rb:

Rails.application.configure do 
... 

# config/environments/development.rb 
config.react.variant = :development 

# to include react add-ons 
config.react.addons = true # defaults to false 

end 

当我访问的页面,它说

ReferenceError: React is not defined 

我做了什么错?

如果我取消以下

var React = window.ReactRailsUJS; 

它说createClass并不是适用于所有发生反应功能

+0

您是否重新启动服务器? –

+0

是的,仍然没有工作。我在其他项目上尝试了Cloud9上的同样的事情,所以它不是“项目错误” –

+0

猜测你的浏览器在你调用它时没有意识到反应 – Drew

回答

2

对于任何运行到这个问题,这里的土地功能相同,显然这是一个问题从React的第16版开始。原因是因为React.createClass已被弃用。相反,你应该使用createReactClass

大部分(现在老了)文件提供一个这样的例子:

var HelloMessage = React.createClass({ 
    render: function() { 
    return (
     <h1>Hello {this.props.name}!</h1> 
    ) 
    } 
}); 

相反,你应该这样做:

var HelloMessage = createReactClass({ 
    render: function() { 
    return (
     <h1>Hello {this.props.name}!</h1> 
    ) 
    } 
}); 

我只能假设他们没有更新自己的例子,当您在2017年11月搜索react-rails时,它们中的许多仍会显示。

相关问题