LoginSignup
0
1

More than 1 year has passed since last update.

【React】ReactでSPA実装(初歩:React Routerでページ内遷移)

Posted at

はじめに

ReactでSPA(シングルページアプリケーション)を作成する上で初歩となる、React Routerに関する記事になります。

前提

この記事では環境構築、「create-react-app」でまでの作業が完了していることを前提に進めます。

1、react-router-domのインストール

まず今回使用するreact-router-domライブラリをインストールします。

npm install react-router-dom

2、遷移先用のjsxを用意する

今回はまずcssもなにもない、ただ文字が表示されるだけの関数コンポーネントが記述されたjsx(hello.jsx、seeyou.jsx)を、 src > page(任意のフォルダ) 配下に用意します。
jsファイルでも問題ありません。

hello.jsx
import React from 'react';

function hello(){
    return (
        <div>
            hello
        </div>
    )    
}

export default hello;
seeyou.jsx
import React from 'react';

function seeyou(){
    return (
        <div>
            seeyou
        </div>
    )    
}

export default hello;

3、App.jsの編集

実際の表示ページであるApp.jsでは、「BrowserRouter」、「Route」、「Link」をインポートします。
BrowserRouterを親要素として、その中にRoute、Linkを記述します。
Routeタグの中ではpathでURLを指定していて、「exact」はpathに指定したURLが完全一致した時のみ表示できるようになります。
componentでは、そのパスに対して表示するコンポーネントを指定しています。

App.js
import React from 'react';
import {
  BrowserRouter,
  Route,
  Link
} from "react-router-dom";
import hello from './page/hello';
import seeyou from './page/seeyou';

function App() {
 return (
   <BrowserRouter>
     <ul>
       <li><Link to="/hello">こんにちは</Link></li>
       <li><Link to="/seeyou">さよなら</Link></li>
       <li><Link to="/">リセット</Link></li>
     </ul>
     <Route path="/hello" exact component={hello} />
     <Route path="/seeyou" exact component={seeyou} />
   </BrowserRouter>
 );
}

4、npm startで表示確認

npm startでlocalhost:3000を開くと以下のように表示されます。
スクリーンショット 2021-06-07 2.19.42.png

まずは「こんにちは」をクリックします。
URLがlocalhost:3000/helloに変わり、「hello」が表示されます。
スクリーンショット 2021-06-07 2.24.07.png

次にリセットをクリックします。
URLが戻り、helloが消えます。
スクリーンショット 2021-06-07 2.24.21.png

「さよなら」をクリックします。
URLがlocalhost:3000/seeyouに変わり、「seeyou」が表示されます。
スクリーンショット 2021-06-07 2.24.28.png

このように非同期処理で表示を切り替えることができます。

0
1
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
0
1