我正在使用Fernando Villalobos的Rails + ReactJS tutorial,并且遇到了(希望)简单的渲染问题。
我正在使用Rails 5.2.1和react-rails gem v2.4.7。
这是控制器逻辑:
def index
@records = Record.all
end
这是视图:
<%= react_component "Records", { data: @records } %>
这是CoffeeScript:
@Records = React.createClass
render: ->
React.DOM.div
className: 'records'
React.DOM.h2
className: 'title'
'Records'
在本教程的这一点上,用户应该看到div,H2标签和“记录”。
Google Developer's Console确认React已将<div data-react-class="Records" data-react-props="..."></div>
插入HTML中-但是我看不到<h2>Records</h2>
的任何迹象。没有报告的错误或警告。我尝试使用等效的JSX语法,但结果没有变化。 javascripts / application.js文件看起来也正确:
//= require rails-ujs
//= require activestorage
//= require turbolinks
//= require react
//= require react_ujs
//= require components
//= require_tree .
我想念什么?
答案 0 :(得分:1)
由于您渲染了<div data-react-class="Records" data-react-props="..."></div>
但未进行处理,因此您会正确地错过webpacker
设置(以防不使用sprockets
)或“ JavaScript pack标签”。
您是否遵循react-rails
宝石的“入门”部分中的说明?参见here
简短说明:
将webpacker
和react-rails
添加到您的gemfile
$ bundle install
$ rails webpacker:install
$ rails webpacker:install:react
$ rails generate react:install
将<%= javascript_pack_tag 'application' %>
添加到您的视图
此步骤可能是可选的(因为您已经编写了组件)
rails g react:component my_subdirectory/HelloWorld greeting:string
<%= react_component("HelloWorld", { greeting: "Hello" }) %>
或者根据您的情况<%= react_component "Records", { data: @records } %>
尝试服务器端渲染,<%= react_component("Records", { data: @records }, {prerender: true}) %>
启动webpack-dev-server
以查看它要抱怨的内容:bin/webpack-dev-server