Rails - 未定义反应
问题描述:
首先,这不是重复的!这是同样的 '没有定义' 错误,但准确位于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并不是适用于所有发生反应功能
答
对于任何运行到这个问题,这里的土地功能相同,显然这是一个问题从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
时,它们中的许多仍会显示。
您是否重新启动服务器? –
是的,仍然没有工作。我在其他项目上尝试了Cloud9上的同样的事情,所以它不是“项目错误” –
猜测你的浏览器在你调用它时没有意识到反应 – Drew