LoginSignup
17
12

More than 3 years have passed since last update.

Rails webpackerによるReact導入

Posted at

個人のメモ用です。

gem: webpackerの追加とインストール

githubのgemをコピペ
rails/webpacker-github

gem 'webpacker', '~> 4.x'

yarnが勝手にやってくれます。
yarnをインストールしていなければ、Homebrewなどでインストールをたしかしないと行けなかったかな?

$bundle
$bundle exec rails webpacker:install

Reactの導入

新しくプロジェクトを作るなら

$rails new myapp --webpack=react

既存のプロジェクトに導入するなら

$bundle exec rails webpacker:install:react

layouts/application.html.erbに一行追加する

layouts/application.html.erb
<head>
    <title>ReactIine</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag    'application' %> #この一行を追加
</head>

gem: react-railsの追加とインストール

gem 'react-rails'

Reactのコンポーネントを作成することができるようになるコマンドかな

$bundle
$rails generate react:install

これで準備完了です!!

最初のコンポーネントを作成

ちゃんと出来ているかテストするために、
コマンドラインでHelloWorldというコンポーネントを作ります。

$rails g react:component HelloWorld greeting:string

app/javascript/components/HelloWorld.jsに以下の用なファイルが出来ます。

javascript/components/HelloWorld.js

import React from "react"
import PropTypes from "prop-types"
class HelloWorld extends React.Component {
  render () {
    return (
      <React.Fragment>
        Greeting: {this.props.greeting}
      </React.Fragment>
    );
  }
}

HelloWorld.propTypes = {
  greeting: PropTypes.string
};
export default HelloWorld

どこのビューでもいいので以下のコードを付け加えます。
今回はわかりやすいようにapplication.html.erbに貼ります。

layouts/application.html.erb
<%= react_component("HelloWorld", { greeting: "Hello from react-rails." }) %>

Greeting: Hello from react-rails.と表示されれば、テスト完了です!!

17
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
12