Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-未定义React_Ruby On Rails_Reactjs_Undefined_React Rails - Fatal编程技术网

Ruby on rails Rails-未定义React

Ruby on rails Rails-未定义React,ruby-on-rails,reactjs,undefined,react-rails,Ruby On Rails,Reactjs,Undefined,React Rails,首先,这不是复制品!这是相同的“未定义”错误,但完全遵循github()指南,仍然不起作用 档案: 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 'spro

首先,这不是复制品!这是相同的“未定义”错误,但完全遵循github()指南,仍然不起作用

档案:

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>
当我访问页面时,它会说

ReferenceError: React is not defined
我做错了什么

如果我取消对以下内容的注释

var React = window.ReactRailsUJS;

它说createClass不是一个函数,其他所有React函数都是一样的。对于任何遇到这个问题并在这里登陆的人来说,显然这是一个从React版本16开始的问题。原因是原因
反应。createClass
已弃用。相反,您应该使用
createReactClass

许多(现在已经过时的)文档都提供了这样一个示例:

var HelloMessage = React.createClass({
  render: function() {
    return (
      <h1>Hello {this.props.name}!</h1>
    )
  }
});
var hellomemessage=React.createClass({
render:function(){
返回(
你好{这个。道具。名字}!
)
}
});
相反,您应该使用以下选项:

var HelloMessage = createReactClass({
  render: function() {
    return (
      <h1>Hello {this.props.name}!</h1>
    )
  }
});
var hellomemessage=createReactClass({
render:function(){
返回(
你好{这个。道具。名字}!
)
}
});

我只能假设他们没有更新他们的示例,并且从2017年11月开始,当您搜索
react rails
时,其中许多示例仍然出现。

您重新启动了服务器吗?是的,仍然不工作。我在其他项目的Cloud9上也做了同样的尝试,所以这不是一个“项目错误”,或者猜测你的浏览器在调用它时没有意识到react,你是否在布局中包含了你的
应用程序.js
?@Drew是对的。javascript\u include\u标记“application”应位于javascript\u include\u标记“react”行之后
var React = window.ReactRailsUJS;
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>
    )
  }
});