React-router-domとは
Reactのルーティングのライブラリです。
ルーティングごとにコンポーネントの表示を切り替えたりできます。
事前準備
・Node
・npm
・React
環境構築
こちらを参考に初期画面までいってください。
※「こんにちは」の画面までです。
切り替え用のコンポーネントを作成
とりあえず3つ作って切り替えていこうと思います。
▽「Home」「Sample1」「Sample2」のコンポーネントを作成
import './App.css'
import Home from './Home'
import Sample1 from './Sample1'
import Sample2 from './Sample2'
function App() {
return (
<div className="App">
<Home />
<Sample1 />
<Sample2 />
</div>
)
}
export default App
import React from 'react'
const Home = () => {
return (
<div>
<h1>Homeですよ。</h1>
</div>
)
}
export default Home
import React from 'react'
const Sample1 = () => {
return (
<div>
<h1>Sample1ですよ。</h1>
</div>
)
}
export default Sample1
import React from 'react'
const Sample2 = () => {
return (
<div>
<h1>Sample2ですよ。</h1>
</div>
)
}
export default Sample2
▽今はこんな感じです。
これを「’/’のときはHome」「’/sample1’のときはSample1」「’/sample2’のときはSamaple2」を表示するようにルーティングを書いていきます。
React-router-domをインストール
▽インストール
npm install react-router-dom@5
最新は6系なのですが、6系は新しめで記事が少ないため、探すのがめんどくさい 実装のしやすさを考えて5系にしました。
▽package.jsonに「react-router-dom」の記載があればOKです。
ルーティング
▽「BrowserRouter」「Route」「Switch」を「react-router-dom」からインポートし、切り替えたいコンポーネントを囲っていきます。
import './App.css'
import Home from './Home'
import Sample1 from './Sample1'
import Sample2 from './Sample2'
import { BrowserRouter, Route, Switch } from 'react-router-dom'; //追記
function App() {
return (
<div className="App">
<BrowserRouter> //追記ここから
<Switch>
<Route path="/" exact component={ Home } />
<Route path="/sample1" exact component={Sample1 } />
<Route path="/sampl2" exact component={ Sample2 } />
</Switch>
</BrowserRouter> //追記ここまで
</div>
)
}
export default App
はい、完成です。
超楽 🙂
「’/’」でHomeのコンポーネント、「’/sample1’」でSample1のコンポーネント、「’/sample2’」でSample2のコンポーネントが表示されます。
▽ちなみに、Linkというコンポーネントを使用すれば、URLの遷移ができます。
aタグみたいなものですね。
import React from 'react'
import { Link } from 'react-router-dom'; //追記
const Home = () => {
return (
<div>
<h1>Homeですよ。</h1>
<Link to='/sample1'>飛ぶよ!</Link> //追記
</div>
)
}
export default Home
個人的には「Link to=’URL’」という書き方はすごい好きです。
中1の単語レベルで何がしたいのかめっちゃ分かりやすいですよね。
さすがに味気ないので、Sample1からHome、Sample2に移動できるようにします。
前回使った「Meterial-UI」のボタンを使って画面遷移をしていきましょう!
Meterial-UI × React-router-dom
前回の記事を参考に、Meterial-UIをインストールします。
▽各コンポーネントを駆け巡れるよう、Buttonにhref属性を指定します。
import React from 'react'
import { Button } from '@mui/material'; //追記
const Home = () => {
return (
<div>
<h1>Homeですよ。</h1>
<p><Button variant="contained" href='./sample1'>サンプル1へ遷移!</Button></p> //追記
<p><Button variant="contained" href='./sample2'>サンプル2へ遷移!</Button></p> //追記
</div>
)
}
export default Home
import React from 'react'
import { Button } from '@mui/material'; //追記
const Sample1 = () => {
return (
<div>
<h1>Sample1ですよ。</h1>
<p><Button variant="contained" href='./'>Homeへ遷移!</Button></p> //追記
<p><Button variant="contained" href='./sample2'>サンプル2へ遷移!</Button></p> //追記
</div>
)
}
export default Sample1
import React from 'react'
import { Button } from '@mui/material'; //追記
const Sample2 = () => {
return (
<div>
<h1>Sample2ですよ。</h1>
<p><Button variant="contained" href='./'>Homeへ遷移!</Button></p> //追記
<p><Button variant="contained" href='./sample1'>サンプル1へ遷移!</Button></p> //追記
</div>
)
}
export default Sample2
これで縦横無尽に駆け巡れるようになりました!
▽こんな感じです
これにて完成です!
Enjoy Hacking!!