我正在做一些使用Ruby on Rails和React的项目。我使用的是react-rails gem。我有一些关于如何正确设计Rails和React应用程序架构的问题。我的问题主要是关于在Rails和React之间传递数据。
我知道主要有两种方法。首先,也是最常见的方式是在Rails中使用单独的API,在React中使用前端应用。这带来了一些利弊。我将不得不开发和维护两个独立的应用程序,但在未来,我可以很容易地将现有的API重用到其他东西上,比如移动应用程序。通过这种方式,我的前端React向Rails API请求数据。
我选择的第二种方式是使用Rails内置的webpacker、react-rails或react-on-rails开发整体式应用程序。通过这种方式,我可以简单地从Rails控制器中获取数据
@foo = Model.find(id)并将其传递给视图中的React组件
=react_component("Foo", {foo: @foo})但当我得到一些更复杂的模型和更多的依赖项时,问题就开始了。例如,假设我有一个模型:
class Foo < ApplicationRecord
belongs_to: :user
has_many: :bar #which is some nested resources现在我想创建一个模型Foo的索引页,它将显示所有的Foo's,user数据,并连接到它的Bar's。在纯Rails应用程序中,我可以简单地在@foo的控制器中请求,稍后在视图中只需使用@foo.user.nick。但是当我使用react时,我需要将所有这些信息提取到我的控制器中,然后使用props传递给React组件,这在我看来会造成很多混乱。
我的问题是:在Rails和React之间传递数据的合适方式是什么?
发布于 2019-05-12 22:58:32
最干净的选择就是像你说的那样,获取控制器并使用props传入。
如果你把它当做道具来做,最好的方法是利用Rails的as_json方法和它的可链接选项:
下面是一个例子:
@my_component_data = @foo.as_json(include: { user: { only: [:id, :name, :nick] } }最终,你可能会选择像ActiveModelSerializers这样的东西,但我个人更喜欢避免速度损失和增加的复杂性,其他人则信以为真。
https://stackoverflow.com/questions/55903838
复制相似问题