はじめに
こんにちは、Engawaです。
ここ最近業務でReactについて触れる機会があり、Reactの学習を行ったので、
環境構築からreact-router-domを使用した簡単なSPAの作成方法についてザックリ紹介していこうと思います。
Reactとは
React はFaceBook社が開発した、UIを作るためのJavaScript用ライブラリです。
アプリに特化したReactNativeもあります。
そちらについてはこちらで紹介していますのでご覧いただけれと思います。
環境構築
私が学習をした際の環境は以下になります。
node: v10.19.0
OS : macOS Catalina
使用したエディタ:VSCode
こちらで記載する環境構築方法はmacOSのみになります。
windowsでnodeをインストールする時はこちらを参考にしてください。
次の5つのコマンドを順番にターミナルで実行してください。
Homebrewのインストール
(nodeをインストールする際に使用します)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
nodeのインストール
brew install node
nのインストール
npm -g i n
nodeのバージョン確認
node -v
上記コマンドを実行してバージョンが表示されていればnodeのインストールは完了です。
$ node -v vバージョン
続いてファイル等の作成を行います。
が、1から設定ファイル等の作成は面倒なのでcreate-react-appを使用します。
create-reeact-appは環境構築ツールで一度インストールしてしまえば、コマンド1つでReactに必要な環境を構築することができます。
まずは下記コマンドでcreate-react-appをインストールします。
npm install create-react-app
インストールが完了したらプロジェクトを作成したいフォルダ上で、下記コマンドでcreate-react-appを実行してReactプロジェクトを作成します。
create-react-app 作成したいプロジェクト名
上記コマンド実行後、プロジェクトフォルダの中に以下のフォルダおよびファイルが作成されていたら作成完了です。
プロジェクト名
├── node_modules/
├── package.json
├── public/
├── README.md
├── src/
└── yarn.lock
起動
作成したプロジェクトフォルダに移動して、
cd プロジェクト名
下記コマンドで起動します。
npm install ↓ npm start
実行後下記画面が表示されれば問題なく起動できています。
SPAの作成
react-router-domのインストール
Reactで画面遷移させるため、react-router-domを使用します。
プロジェクト名のフォルダ直下で下記コマンドを実行してreact-router-domをインストールしてください。
npm install react-router-dom
package.jsonにreact-router-domのライブラリが追加されていたらインストール完了です。
サンプルコード
src/index.js
<BrowserRouter>
でrouterの導入を行います。
react-router関連の処理はすべて<BrowserRouter>
内で使用しなくてはいけないかつ、1プロジェクトにつき1つしか使用できないため、<BrowserRouter>
は上位層で使用することになります。
import React from 'react'; import ReactDOM from 'react-dom'; import { BrowserRouter } from 'react-router-dom'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; ReactDOM.render( <BrowserRouter> <App /> </BrowserRouter>, document.getElementById('root') ); reportWebVitals();
src/App.js
<Route>
にはルーティング先のURLとコンポーネントの切り替えを行います。
今回はroutes.jsにパスを記載して、routesからそれぞれの値を呼び出し、
<Switch>
でURLが一致した時にコンポーネントを表示させます。
import React from 'react'; import { Route, Switch, withRouter } from 'react-router-dom'; import routes from './routes'; const App = () => { return ( <Switch> {routes.map((route, idx) => ( <Route path={route.path} exact={route.exact} component={route.component} key={idx} /> ))} </Switch> ); }; export default withRouter(App);
src/routes.js(新規で作成)
import One from './page/one'; import Two from './page/two'; const routes = [ { path: '/', component: One, exact : true }, { path: '/two', component: Two,}, ]; export default routes;
src/page/one.js(新規で作成)
画面遷移をするために<link>
を使用しています。
やっていることはaタグと同じで、to属性でリンク先のURLを指定しています。
import React from 'react'; import { Link } from 'react-router-dom'; import Two from './two'; class One extends React.Component{ render(){ return ( <div> test_one<br/> <Link to='/two'>twoへ</Link> </div> ) } } export default One;
src/page/two.js(新規で作成)
import React from 'react'; import { Link } from 'react-router-dom'; import One from './one'; class Two extends React.Component{ render(){ return ( <div> test_two<br/> <Link to='/'>oneへ</Link> </div> ) } } export default Two;
実行
実行するとこんな感じで画面遷移することができます。
おわりに
今回はReactの触りについて学習を行ったので、環境構築から簡単な画面遷移のやり方について紹介させていただきました。
何かしら学習を行う際は大体環境構築あたりで躓いて投げ出すことが多いので、今回みたいにcreate-reeact-appを実行するだけで簡単に環境構築ができるのは大変助かりました。
参考資料
https://qiita.com/ShinKano/items/541050c36e08e78a5176
https://dezanari.com/react-react-router/
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
rakus.hubspotpagebuilder.comラクスDevelopers登録フォーム
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!
◆TECH PLAY
techplay.jp
◆connpass
rakus.connpass.com