簡體   English   中英

使用React設計Ruby on Rails應用程序的正確方法是什么

[英]What's a proper way to design Ruby on Rails application with React

我正在使用帶有React的Ruby on Rails做一些項目。 我正在使用react-rails gem。 我有一些關於如何正確設計Rails和React應用程序架構的問題。 我的問題主要是關於在Rails和React之間傳遞數據。

我知道主要有兩種方法。 第一種也是最常見的方式是Rails中的單獨API和React中的前端應用程序。 這帶來了一些利弊。 我必須開發和維護兩個獨立的應用程序,但在將來,我可以輕松地將現有的API重用於移動應用程序等其他內容。 通過這種方式,我的前端React向Rails API索取數據。

我選擇的第二種方式和方式是使用內置的Rails webpackerreact-railsreact-on-rails開發monolith app。 通過這種方式,我可以簡單地在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'suser數據並連接到它的Bar's 在純Rails應用程序中,我可以簡單地在控制器中@foo ,稍后在視圖中使用@foo.user.nick 但是當我使用react時,我需要在我的控制器中獲取所有這些信息,然后使用props傳遞給React組件,這在我看來會造成很多混亂。

這是我的問題:在Rails和React之間傳遞數據的正確方法是什么?

最干凈的選擇就像你說要獲取控制器並使用道具傳遞。

如果你把它作為道具,最好的方法是利用Rails的as_json方法及其可鏈接的選項:

  • 只要
  • 除了
  • 方法
  • 包括

一個例子:

@my_component_data = @foo.as_json(include: { user: { only: [:id, :name, :nick] } }

最終你可能會選擇像ActiveModelSerializers這樣的東西,但我個人更喜歡避免速度損失和增加復雜性,其他人則發誓。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM