React Routerでクライアントルーティング時にデータ取得をする方法です。
React Routerの機能、LoaderとuseLoaderDataを使用します。
動作環境
エディション | Windows 11 Home |
バージョン | 21H2 |
Node | 18.15.0 |
開発環境
こちらの構成で動かしています。
React Routerでクライアントルーティングの続きです。
構成
src
│ Data.jsx
│ index.jsx
│ Router.jsx
│
├─css
│ demo.css
│
└─pages
Demo.jsx
データ取得
データを作成します。
Data.jsx
export const usersData = async () => {
const users = [
{
id: 1,
name: 'tok',
},
{
id: 2,
name: 'tak',
},
]
return await { users }
}
loaderに受け渡したい値を指定するとクライアントルーティング時にデータ取得が行えるようになります。
Router.jsx
import React from 'react'
import { Route, createBrowserRouter, createRoutesFromElements } from 'react-router-dom'
import { Demo } from '../src/pages/Demo'
import { usersData } from './Data'
export const router = createBrowserRouter(
createRoutesFromElements(
<Route path={'/'} element={<Demo />} errorElement={<div>error</div>} loader={usersData}>
<Route path={'demo'} element={<div>demo</div>} />
<Route path={'demo/:id'} element={<div>demo1</div>} />
</Route>
)
)
loaderに指定したusersDataをuseLoaderDataを使用して受け取ります。
注意点は分割代入時の変数名がusersData関数で返却した変数名となることです。
Demo.jsx
import React from 'react'
import { Link, Outlet, useLoaderData } from 'react-router-dom'
import {} from '../css/demo.css'
export const Demo = () => {
const { users } = useLoaderData()
return (
<div className='main'>
<div className='side'>
<div className='link'>
<Link to={`demo`}>demo</Link>
</div>
<div className='link'>
<Link to={`demo/1`}>demo1</Link>
</div>
</div>
<div className='content'>
{users.map((value) => {
return (
<div key={value.id}>
id:{value.id} name:{value.name}
</div>
)
})}
<Outlet />
</div>
</div>
)
}
ルーティングの結果
今回学んだこと
クライアントルーティング時のデータ取得方法
React RouterのLoaderとuseLocalDataの使用方法
おすすめの書籍
JavaScriptのおすすめの書籍です。
おすすめのUdemy講座
ReactでおすすめのUdemy講座です。
モダンJavaScriptの基礎から始める挫折しないためのReact入門
ReactはJavaScriptの基本的な構文を使用するため、Reactだけの理解では足りないでしょう。
こちらのReact講座は、JavaScriptでのTODOアプリを作成してからReactでのTODOアプリを作成するため、ReactだけではなくJavaScriptを基礎から学ぶことができます。
Reactからいきなり入らずにJavaScriptの基礎から学べる点が、初心者にとてもおすすめできる内容となっています。
【Reactアプリ開発】3種類のReactアプリケーションを構築して、Reactの理解をさらに深めるステップアップ講座
APIを使用してデータを取得したり、react-router-domでのページ遷移を学べるためより実践的な内容となっています。
3種類のReactアプリケーションを作成することができるため、Reactの基礎的な内容を学んだ人におすすめです。
基本的に構文が載っているため、教科書代わりに使える内容となっています。
Reactの前にとてもお世話になりました。JavaScriptをこれから始める方におすすめです。