スポンサーリンク

【React入門】React Routerでクライアントルーティング時にデータ取得

【React入門】React Routerでクライアントルーティング時にデータ取得JavaScript
【React入門】React Routerでクライアントルーティング時にデータ取得
スポンサーリンク

React Routerでクライアントルーティング時にデータ取得をする方法です。

React Routerの機能、LoaderとuseLoaderDataを使用します。

Feature Overview v6.23.1 | React Router

動作環境

エディションWindows 11 Home
バージョン21H2
Node18.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>
    )
}
GitHub - TokutyTok/React-Code-Collection at feature/router
Reactのコード集. Contribute to TokutyTok/React-Code-Collection development by creating an account on GitHub.

ルーティングの結果

今回学んだこと

クライアントルーティング時のデータ取得方法

React RouterのLoaderとuseLocalDataの使用方法

おすすめの書籍

JavaScriptのおすすめの書籍です。

基本的に構文が載っているため、教科書代わりに使える内容となっています。

Reactの前にとてもお世話になりました。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の基礎的な内容を学んだ人におすすめです。

タイトルとURLをコピーしました