javascript - 如何使用 react-rails gem 预渲染命名空间的 React 组件?

标签 javascript ruby-on-rails ruby reactjs

(注意:我使用的是“therubyracer”、“react-rails”和“sprockets-coffee-react”gem)

这是我的简单组件 (Hello.js.cjsx) 的代码:

# @cjsx React.DOM

Hello = React.createClass(
  render: ->
    <div>
      Hello {@props.name || "World"}!
    </div>
)

window.components ?= {}
window.components.Hello = Hello

在我的 Rails View (index.html.erb) 中,这工作得很好:

<%= render_component('components.Hello', {name: 'Jack'}) %>

但是,当我尝试这样做时:

<%= react_component('components.Hello', {name: 'Jill'}, {prerender: true}) %>

我收到这个错误:

遇到错误“ReferenceError:组件未定义”

这看起来很奇怪,因为我在我的组件中定义了它。

我做错了什么?

最佳答案

问题是对于使用 render_component 呈现的任何内容要求组件在全局 window 中注册目的。这有点不理想,但目前它是如何工作的。

这就是我一直在做的。不理想,但有帮助。

components /
    namespace /
       MyComponent.js.jsx

然后在我的文件中这样做:

# components/namespace/MyComponent.js.jsx

window.NamespaceMyComponent = React.createClass({});

module.exports = window.NamespaceMyComponent;

这最后一部分允许我使用 browserify 并像这样要求我的模块:

require('components/namespace/MyComponent')

并使用 render_component像这样的助手:

<%= render_component "NamespaceMyComponent", {}, {prerender: true} %>

关于javascript - 如何使用 react-rails gem 预渲染命名空间的 React 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26311951/

相关文章:

javascript - 更新 Angular Directive(指令)中的数据

javascript - "Cross-Origin Request Blocked: The Same Origin Policy"浏览器错误

ruby-on-rails - "inputSourceMap must be a boolean, object, or undefined"错误

jquery - geocomplete_rails 和 Uncaught ReferenceError : google is not defined

ruby-on-rails - rails中类属性的未定义方法错误

javascript - 从配置文件插入 HTML 元素的更简单和更可维护的方法

javascript - 如何让 JSDoc 将我的参数标记为 jQuery 对象?

ruby-on-rails - Dockerized Rails 应用程序 : slow after container start

ruby-on-rails - 如何在 "onchange"上为 ruby​​ on rails 中的 Select_tag 使用特定的 Controller \操作

ruby-on-rails - 无法安装 autotest-fsevent 或 rs-fsevent;收到 ld 错误但已安装 xcode