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演算子の詳細

推薦する

MySQLの分離レベルとロックメカニズムの詳細な説明

目次簡単な説明: 1. 取引の4つの特徴2. 複数の同時トランザクションによって発生する問題3. ト...

MySQLでよく使われる演算子と関数の概要

まずデータ テーブルを作成しましょう。 使用テスト; テーブル「従業員」を作成します( emp_no...

MySQL Community Server 5.7.16 のグリーン バージョンをインストールしてリモート ログインを実装する方法

1. MySQL Community Server 5.7.16をダウンロードしてインストールします...

MySQL トリガーの紹介、トリガーの作成、使用制限の分析

この記事では、例を使用して、MySQL トリガーの概要、トリガーの作成方法、およびトリガーの使用上の...

APP (IOS、Android) を呼び出すモバイル H5 の記述例

iOS 1. URLスキームこのソリューションは基本的に、WeChat、QQ 組み込みブラウザ、QQ...

入力ボックスのコンテンツプロンプトと非表示機能を実装する JavaScript

入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...

ウェブデザイン必携ハンドブック 216 ウェブセーフカラー

Web ページ上の色の表現は、さまざまな要因によって影響を受けます。Web ページで非常に美しい配色...

Dockerはコード検出プラットフォームSonarQubeを構築し、Mavenプロジェクトのプロセスを検出します

1 はじめに優れたコーディング習慣は優れたプログラマーが備えるべき資質ですが、コードの品質を保証する...

vue.js でよく使われる v 命令の解析

目次Vue でのモデルバインド表示の if の v-text の説明v-html: v-オンv-if...

vue+element テーブルで動的な列フィルタリングを実装するためのサンプルコード

要件: データをリスト形式で表示する場合、表示すべき情報項目が多く、表が横に長くなってしまいます。表...

マインスイーパゲームを実装するための jQuery プラグイン (1)

この記事では、jQueryプラグインを使用したマインスイーパゲームの最初の記事の具体的なコードを参考...

列名を知らなくてもMySQLインジェクションを詳細に解説

序文最近、穴を掘ってスペースを作っているだけなので、心が空っぽになっているように感じます。テクノロジ...

Linux で rpm パッケージを見つけるために CD をマウントする方法

前面に書かれたLinux を使用する際にソフトウェアをインストールする必要がある場合があります。もち...

Windows 10 での MySQL 5.7.21 winx64 のインストールと設定方法のグラフィック チュートリアル

mysql 5.7.21 winx64 のインストールと設定方法: MySQLのコミュニティバージョ...

MySQLとOracleの誤解の詳細な説明

目次本質的な違いデータベースセキュリティ権限スキーマの移行パターンオブジェクトの類似性スキーマオブジ...