gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:42 26 4
gpt4 key购买 nike

(注意:我使用的是“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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com