メニューを閉じる

テクノデジタルグループ

メニューを開く

2018.05.25

プログラミング

Rails5.1にReactを導入

こんにちは、KSです。
今日は既存のRailsアプリにreact-railsとwebpackerというgemを使って、
Reactを導入する方法を書いてみます。

react-railsとwebpackerの場合

インストール

Gemfileに以下を追加して、bundle install

WebpackerのReactインストールの実行

これでReactに必要なフォルダやファイルが生成されてReactが入ります。
webpackerによりapp/javascript/packsにhello_react.jsxが生成されているのがわかると思います。
これはReactを使って、「Hello React」を表示させる簡単なものです。
これを使って、Reactが使えるようになったかを確認してみます。

Reactを使って「Hello React」を表示

コントローラー、ビュー、ルーティングを生成
rails g controller sample index
app/views/layouts/application.html.erbに以下のようにjavascript_pack_tagを追加

この状態でrailsサーバーを起動すると、「Hello React」が表示されます。

react-railsでのReactコンポーネントの作成

react-railsではReactコンポーネントを以下のコマンドで作成できます。
rails g react:component コンポーネント名

そうするとapp/javascript/component/ の配下にコンポーネント名.jsが生成されます。
例えば、rails g react:component calculator だと
app/javascript/component/calculator.jsが生成されます。

あとは好きなviewで

<% react_component ‘calculator’ %>

というようなview helperを記載しておくと、
app/javascript/component/calculator.jsを読み込んでくれます。

Viewでの読み込み

上記と合わせて、app/views/layouts/application.html.erbには

<%= javascript_pack_tag ‘application’ %>

を記載しておく必要があります。

webpackerのみの場合

react-railsを入れずに、webpackerのみでもReactを導入できます。
webpackerのみの場合、react_componentヘルパーは使えません。
また、通常どおりrailsサーバーを起動しても、Reactは動いてくれません。
railsサーバー起動後、別ターミナルで以下を叩きコンパイルするとReactを読み込んで反映されます。

./bin/webpack-dev-server

 

webpackerで読み込むコンポーネント

コンポーネントを入れるフォルダを作成
webpackerのみの場合、app/javascript/配下にはpacksフォルダしか生成されないので、
ここで任意のフォルダを作成します。
app/javascript/calculator/

コンポーネントファイルを作成

Viewでの読み込み

app/javascript/packs/calculator.jsを作成し、その中に読み込むフォルダを記載
import ‘calculator’

そうするとapp/javascript/calculator/ 配下のコンポーネントをimportします。

あとはapp/views/layouts/application.html.erbのHEADタグ内にreact-railsの時と同じようにjavascript_pack_tagを追加し、
app/javascript/packs/calculator.jsを指定してあげるとviewで読み込んでくれます。

導入方法は以上です。
比較的簡単にできると思うので是非試してみてください。


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事

SNS共有