カスタムReactルータープロンプト

react-routerを使用してナビゲーションにカスタムプロンプトを実装する方法

カスタムプロンプトの必要性は何ですか?

ほとんどのreactプロジェクトは、コンポーネントのUIデザインシステムに従います。アプリ全体で同じ設計の一貫性を実現するために、コンポーネントを再利用します。ただし、保存されていないユーザーデータがある場合にナビゲーションをブロックするには、デフォルトのブラウザプロンプトが、ユーザーが別のルートに移動するのをブロックする最も一般的で簡単な方法です。ただし、ポップアップがライブラリコンポーネントと一致しません。

デフォルトのreact-router プロンプトの代わりにカスタムモーダルを使用する方法を明示的に言及している公式ドキュメントはありません。

解決

必要な結果を得るために従うべきいくつかの簡単なステップがあります。各ステップには、100%機能するコードスニペットが含まれています。プロジェクトで使用できます。

ステップ1

デフォルトのブラウザプロンプトを無効にするかブロックする必要があります。これgetUserConfirmationは、BrowserRouterの関数propに空のコールバックを渡すことで実行できます。

ステップ2

今度は、カスタム作成してみましょうRouterPrompt使用して、コンポーネントuseHistoryからのフックreact-router-domとアリ設計のためのコンポーネントライブラリmodalのコンポーネントを。

history.block私たちは離れて、現在のページからのナビゲーションをブロックすることができます。空の関数または空の引数をblockメソッドに渡すと、ナビゲーションが続行され、ブロックまたは中断されません。

useEffect使用してそれを表示するかどうか、プロンプトの初期状態を処理するために使用されるwhen小道具を。

コールバックを確認し、ナビゲーションをキャンセルを制御するために使用されています。handleOKhandleCancel

ステップ3

ページ間を移動するための2つのサンプルコンポーネントを作成しましょう。たとえば、最初のコンポーネントDashboard.jsxを、2番目のコンポーネントをとしますHome.jsx。

homeコンポーネントは、当社のカスタム含まれていRouterPromptコンポーネントを。プロンプトは、ページの変更時およびwhen小道具に基づいてトリガーされます。when小道具は条件付きプロンプトを起動するために使用されます。たとえば、when小道具がに設定されている場合、trueページがナビゲートするたびにプロンプ​​トが表示されます(ホームルートから他のルートへ、または前後にナビゲートします)。

コールバックの小道具は、ルートを進めるためにはブール値を返す必要があります。onOKonCancel

結果

結論

独自のカスタムモーダルまたはデフォルトのブラウザプロンプトであっても、任意のコンポーネントライブラリのモーダルを使用できます。ただし、を実装するときは注意してくださいhistory.block。

上記の手順に従うことで、目的のソリューションを実現できます。コードは100%機能しています。コードスニペットをアプリケーションにコピーして、時間を節約できます。

参考文献

  1. https://reactrouter.com/web/api/Hooks/usehistory
  2. https://reactrouter.com/web/api/history

提案された投稿

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

はじめに 脳卒中は、いつでも誰でも起こり得る医療上の緊急事態です。これは、脳の一部への血流が中断され、脳機能が突然失われることで発生します。

デザインシステムと未来の変化の波

デザインシステムと未来の変化の波

デザインシステムは適切なタイミングで私を魅了しました。私は長い間、デザインとコードの世界にまたがっていると感じていましたが、少し経験を積むと、より製品指向の領域に移行し、これらの世界を統合したり、それ以上のことを可能にしたりできます。

関連記事

安全な労働環境の構築

安全な労働環境の構築

「私が危険にさらされたとき、彼は私を守ってくれます。彼は私をテントの中に隠すでしょう。

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

地球を救ってお金を稼ぐ方法

地球を救ってお金を稼ぐ方法

ペットボトル、ガラス瓶、アルミ缶、グリーンエネルギーパッケージなどを、何回考えずに捨てたことがあるでしょうか? リサイクルする代わりに何かが得られたらいいのにと何度思ったことか。あなたがほとんどの人と同じなら、おそらく答えは何度もあるはずです。リサイクルは、多くの場合、即時的または具体的な利益をもたらさない面倒な作業、面倒な作業、または義務であると考えられています。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

イスラム嫌悪のことは忘れてください。宗教的憎悪犯罪の主な犠牲者はキリスト教徒(そしてユダヤ人)です。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

理性的な人なら誰でも、政界とメディア界が左派、さらには極左によって支配されており、政治的言説に不均衡を生み出している状況を知っています。宗教の分野では、この不均衡は明らかです。左翼の新聞やネットワークは急いでキリスト教の信仰を擁護していません。