2017-08-15 7 views
2

どのようにしてRails 5.1データベースオブジェクトをReactコンポーネントと呼んでいますか?Rails 5.1に反応するReactコンポーネントにデータベースオブジェクトを呼び出す

たとえば、標準のRailsビューでは、コントローラに設定されたアクセス権があると仮定して、@ objectを使用してオブジェクトを呼び出すことができます。

Rails 5.1では、Webpacker対応のReact機能を使用して、RailsデータベースオブジェクトをReactコンポーネントに呼び出す方法を教えてください。

データベースのすべての@objectsをReactコンポーネントでマップしたいと考えています。反応レールの宝石で

、あなたのJSXファイルでそれらのオブジェクトにアクセスするには、このようなものを使用することができます。

<%= react_component('Component', props: @objects) %> 

どのように私はベースのRails 5.1を宝石を使用して、ちょうど使用せずに似た何かを行います/ Webpackerセットアップを反応させますか?あなたが反応成分をレンダリングする場所をビューテンプレートでは

<%= javascript_pack_tag "Component" %> 

答えて

1

私の理解では、このようなルビータグを使用している。これは、このHTMLタグをレンダリングし

<%= javascript_pack_tag 'Component' %> 

<%= content_tag :div, 
    id: 'objects_data', 
    data: @objects.to_json do %> 
<% end %> 

<div id="objects_data" data="[{"id": 1, "created_at": .....}]"></div> 

JSファイル

document.addEventListener('DOMContentLoaded',() => { 
    var objectsDataTag = document.getElementById('objects_data') 
    const objectsData = JSON.parse(objectsDataTag.getAttribute('data')) 
}) 

ここでは、JSONデータがobjectsData定数に格納されています。

私が理解しているのは、<%= react_component('Component', props: @objects) %>も同様です。

これはwebpacker docsにし、this blog post

+0

おかげで、もう少し詳細に覆われています!私はそれを試みます。 – JohnOHFS

+0

@ JohnOHFS JSON解析をDOM読み込みイベントリスナーにラップする必要があることを示す更新を追加しました。また、私自身のプロジェクトのために役立つブログ記事へのリンクも追加しました。お役に立てれば! –

+0

@ m-simon-borg今、すべてのオブジェクトデータをビューにインポートすると、オブジェクトコントローラ内の(at)objects = Object.allを使用して、数千のオブジェクトエントリがレールデータベースにある場合、それらをすべてロードしてパフォーマンスを低下させようとしていますか?そのhtmlタグのデータ読み込み量を制限するベストプラクティスアプローチはありますか? – JohnOHFS

関連する問題