React Router V6 のアップデート

React Router V6 のアップデート

React Router V6 の変更点

私は Router バージョン 5.x を使用していましたが、Router V6 にいくつかの変更が加えられており、ネストされたルートに対してより使いやすいものになっていることに突然気付きました。ここで簡単に紹介させていただきます。

1. < スイッチ > が < ルート > に名前変更されました

従来、Router を使用する場合、Switch でラップする必要がありましたが、これによりルートマッチング (単一マッチング) の効率が向上します。 V6 では、このトップレベル コンポーネントの名前は Routes に変更されますが、機能はほとんど変更されないことに注意してください。

2. <Route>の新機能の変更

コンポーネント/レンダリングは要素に置き換えられます

// v5
<スイッチ>
    <ルート パス="/about" コンポーネント={About}/>
    <ルート パス="/home" コンポーネント={Home}/>
</スイッチ>
//v6
<路線>
    <ルートパス="/about" 要素={<About/>}/>
    <ルートパス="/home" 要素={<Home/>}/>
</ルート>

3. ネストされたルートが簡単に

3.1 具体的な変更点は次のとおりです。

  • <Route children> は子ルートを受け入れるように変更されました。
  • < Route exact > や < Route strict > よりも単純な一致ルール。
  • <ルートパス> パス階層がより明確になりました。
関数App() {
  戻る (
    <ブラウザルーター>
      <路線>
        <ルートパス="/" 要素={<ホーム />}} />
        <ルートパス="/about" 要素={<About/>}>
          <ルート パス="/about/message" 要素 = {<Message/>} />
          <ルートパス="/about/news" 要素={<News/>} />
        </ルート>
      </ルート>
    </ブラウザルーター>
  );
}
関数About() {
  戻る (
    <div>
      <h1>について</h1>
      <Link to="/about/message">メッセージ</Link>
	  <Link to="/about/news">ニュース</Link>
        (*)
       上記で定義されたさまざまなルーティングパラメータに従って、<MyProfile /> または <OthersProfile /> を直接レンダリングします。
        */
      <アウトレット />
    </div>
  )
}

ここでの < Outlet /> はプレースホルダーに相当し、{this.props.children} と非常によく似ており、ますます Vue に似てきています 😎。

3.2 V5 で廃止されたリダイレクト

//v5
<リダイレクト先="/"/>
//v6
<ルートパス="*" 要素={<移動先="/" />}}/>

3.3 複数の < ルート />

以前は、React アプリで使用できるルートは 1 つだけでした。しかし、今では React App で複数のルートを使用できるようになり、異なるルートに基づいて複数のアプリケーション ロジックを管理するのに役立ちます。

'react' から React をインポートします。
'react-router-dom' から Routes, Route をインポートします。
関数ダッシュボード() {
  戻る (
    <div>
      <p>ほら、ルートがもっとあるよ!</p>
      <路線>
        <ルート パス="/" 要素 = {<DashboardGraphs />}} />
        <ルート パス="請求書" 要素 = {<InvoiceList />} />
      </ルート>
    </div>
  );
}
関数App() {
  戻る (
    <路線>
      <ルートパス="/" 要素={<ホーム />}} />
      <ルート パス="dashboard/*" 要素 = {<Dashboard />} />
    </ルート>
  );
}

4. useHistoryの代わりにuseNavigateを使用する

// v5
'react-router-dom' から useHistory をインポートします。
関数MyButton() {
  履歴を useHistory() にします。
  関数handleClick() {
    履歴をプッシュします('/home');
  };
  <button onClick={handleClick}>送信</button>を返します。
};
//v6では、history.push()はnavigation()に置き換えられました
'react-router-dom' から useNavigate をインポートします。
関数MyButton() {
  ナビゲート = useNavigate();
  関数handleClick() {
    ナビゲート('/home');
  };
  <button onClick={handleClick}>送信</button>を返します。
};

history の使用法も次のように置き換えられます。

// v5
履歴をプッシュします('/home');
履歴を置き換えます('/home');
// v6
ナビゲート('/home');
ナビゲート('/home'、{replace: true});

5. Hooksの新しいフックuseRoutesがreact-router-configに置き換わる

関数App() {
  要素をuseRoutes([
    { パス: '/'、要素: <Home /> },
    { パス: 'ダッシュボード'、要素: <ダッシュボード /> },
    { パス: '請求書',
      要素: <請求書 />,
      子供たち: [
        { パス: ':id'、要素: <請求書 /> },
        { パス: 'sent'、要素: <SentInvoices /> }
      ]
    },
    // リダイレクト { パス: 'home', リダイレクト先: '/' },
    // 404 見つかりません { パス: '*'、要素: <NotFound /> }
  ]);
  要素を返します。
}

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • react-router-domV6 におけるルーティングとネストされたルーティングの詳細な説明

<<:  CSS3+JS による虫眼鏡モードの完璧な実装の詳細説明

>>:  MySQLのlike演算子の詳細

推薦する

高性能な HTML アプリケーションを作成するためのヒント

Web ページのパフォーマンスを向上させるにはどうすればよいでしょうか?ほとんどの開発者は、Java...

NextCloud プライベート クラウド ストレージ ネットワーク ディスクの構築に関する詳細なチュートリアル

Nextcloud は、オープンソースで無料のプライベート クラウド ストレージ ネットワーク ディ...

CSS3を使用してフォントカラーグラデーションを実装する

Animation.css を使うと公式サイトのフォントがだんだんと変わっていくのが分かりました。c...

JavaScript の setTimeout と setTimeinterval の使用例の説明

どちらの方法も、一定時間後に JavaScript コードを実行するために使用できますが、それぞれに...

HTML における <meta> タグの使用に関する詳細な説明

私たちが作成する Web ページでは、より多くの人々に訪問してもらいたい場合、検索エンジンを使用して...

JSはユーザー登録インターフェース機能を実装します

この記事の例では、ユーザー登録インターフェース機能を実装するためのJSの具体的なコードを参考までに共...

Workermanはmysql接続プールのサンプルコードを書きます

まず、接続プールを使用する理由と、接続プールによってどのような問題が解決できるかを理解する必要があり...

ウェブカラーのコントラストと調和のテクニックの共有

色のコントラストと調和対照的な状況では、色の相互作用は単一の色によって与えられる感覚とは異なります。...

WebプロジェクトのDockerデプロイメントの実装

前回の記事では、docker サービスをインストールしました。引き続き、Web プロジェクトのデプロ...

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例Spring Jdbc デー...

ウェブサイトの画像にグレー効果を加える3つの方法

私はグレースケールの画像の方が芸術的に見えると思うので、いつもグレースケールの画像を好んで使っていま...

Vue シングルページ SEO の 4 つのソリューションについての簡単な説明

目次1.Nuxtサーバーサイドレンダリングアプリケーションの展開(SSRサーバーレンダリング)利点:...

Linux での MySQL データベースのマスター スレーブ同期レプリケーション構成

Linux での MySQL データベースのマスター/スレーブ同期構成の利点は、この方法をバックアッ...

CSSボックスの表示/非表示とトップレイヤーの実装コード

.imgbox{ 幅: 1200ピクセル; 高さ: 612px; 右マージン: 自動; 左マージン...

レスポンシブWebデザイン学習(1) - 画面サイズと使用率の決定

最近では、モバイルデバイスがますます普及しており、ユーザーがスマートフォンやタブレットを使用して W...