【发布时间】:2014-12-06 08:42:38
【问题描述】:
(注意:我使用的是“therubyracer”、“react-rails”和“sprockets-coffee-react”宝石)
这是我的简单组件 (Hello.js.cjsx) 的代码:
# @cjsx React.DOM
Hello = React.createClass(
render: ->
<div>
Hello {@props.name || "World"}!
</div>
)
window.components ?= {}
window.components.Hello = Hello
在我的 Rails 视图 (index.html.erb) 中,这很好用:
<%= render_component('components.Hello', {name: 'Jack'}) %>
但是,当我尝试这个时:
<%= react_component('components.Hello', {name: 'Jill'}, {prerender: true}) %>
我收到此错误:
Encountered error "ReferenceError: components is not defined"
这看起来很奇怪,因为我在我的组件中定义它。
我做错了什么?
【问题讨论】:
-
就是这样。未定义的错误。什么是“?=”?
-
?= 是咖啡脚本的“存在”运算符。它的 javascript 等效项是: if (window.components == null) { window.components = {}; }
-
我应该补充一下,将该行更改为:window.components = {} 不能解决问题。
标签: javascript ruby-on-rails ruby reactjs