検索
ホームページウェブフロントエンドフロントエンドQ&A反応ジャンプ前のページステータスを記憶する方法

React は、ジャンプする前にページのステータスを記憶するメソッドを実装します: 1. パスの変更を監視し、パスが変更されたときに lastPath と currentPath を redux ストアに更新します; 2. ページ A を離れるときに、ページのステータスを次の場所に保存します。 redux ストア内; 3. redux ストアの lastPath がページ B のパスと等しい場合、A は B によって復元された状態に戻されたとみなされ、そうでない場合は復元されません。

反応ジャンプ前のページステータスを記憶する方法

このチュートリアルの動作環境: Windows 10 システム、react18.0.0 バージョン、Dell G3 コンピューター。

反応する前にページのステータスを記憶するにはどうすればよいですか?

React ページは最後の状態を保持するために戻ります

要件

  • ページ A Jump ページ B に移動してから、ページ A に戻ります。ページ A は、終了する前に状態を復元する必要があります。

  • ページ A とページ B への入り口は複数あります。ページ A は状態を復元しません。

##設計

  • パスの変更をリッスンし、パスが変更されたときに lastPath と currentPath を redux ストアに更新します。

  • ページ A を離れるとき、ページのステータスを redux ストアに保存します。

  • ページ A に入るとき、redux ストアの lastPath が等しい場合は、ページ B のパスにアクセスした場合、A は B によって復元された状態に戻されたと見なされます。そうでない場合は復元されません。

実装

このプロジェクトでは、react-router dva ライブラリを使用しており、実装部分には関連テクノロジが含まれます。

パスの変更を監視し、履歴を通じてパスの変更を監視し、lastPath と currentPath を記録します。ここでは、DVA サブスクリプションは履歴をサブスクライブするために使用され、パスが変更されると、パス情報が状態に同期されます。

const model = {
  namespace: "global",
  state: {
    pathName: { last: "", current: "" },
  },
  reducers: {
    setPathName(state: any, { pathName }: any) {
      state.pathName.last = state.pathName.current;
      state.pathName.current = pathName;
    },
   
  effects: {
  },
  subscriptions: {
    setup({ history, dispatch }: any) {
      return history.listen(({ pathName }: any) => {
        dispatch({ type: "global/setPathName", pathName });
      });
    }
  }
};

ページがアンロードされるときにステータスを Redux ストアに同期します。たとえば:

componentWillUnmount() {
    const { dispatch } = this.props;
    const { activeKey } = this.state;
    dispatch({
      type: "projectInfo/setProjectInfoPage",
      payload: { activeKey }
    });
  }

ページがリロードされるとき。たとえば:

state = {
    activeKey: pathToRegexp(PagePath.B).exec(pathName.last) ? activeKey : ""
  };

pathToRegexp は、 path-to-regexp ライブラリ、使用されます。 ルート マッチング。ここでは、前のページがページ B であるかどうかを判断するために使用されます。

その他の解決策

ページ A がページ B によって返されるかどうかを判断します。ページ B が返されたときに状態を追加します。history.push({ pathname: path, state: {from } }); でAページに入り、状態に応じてBページから戻るかどうかを判断します。しかし、B に複数の入り口がある場合、戻るときにページのソースを知る必要があり、そうでないと戻ることができず、ロジックが少し複雑になり、エラーが発生しやすくなります。

概要

この記事では、ページに複数の入り口と出口がある状況に適した、最後の状態を保持するページリターンのソリューションを提案します。このソリューションでは、履歴の変更を監視し、最後のページ アドレスを記録する方法を使用して、状態を復元するかどうかの基準を提供します。

推奨される学習: 「

react ビデオ チュートリアル

以上が反応ジャンプ前のページステータスを記憶する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
CSS:同じDOMで複数のIDを使用できますか?CSS:同じDOMで複数のIDを使用できますか?May 14, 2025 am 12:20 AM

いいえ、あなたはusemultipleidsinthemedom.1)idsmustbeuniqueperhtmlspecification、およびusingdusing cansistent browserbehavior.2)useclassesses forstylingmultipleElements、acturtorectorectorectorsectorgettributeurutuureのuseclasses forstyling forstyling forstyling forstyling forstyling forstyling rassess for -destendertantertorectorsutortortortruture

HTML5の目的:より強力でアクセス可能なWebを作成するHTML5の目的:より強力でアクセス可能なWebを作成するMay 14, 2025 am 12:18 AM

html5aimstoenhancewebcapability、makingmoredynamic、interactive、およびaccessible.1)itupportsmultimediaelementslikeand、排除、2)semanticelementionmentionmentionmentionimementsimementionimementsimementsimbrovecessibilityandcodereadability.3)

HTML5の重要な目標:Web開発とユーザーエクスペリエンスの向上HTML5の重要な目標:Web開発とユーザーエクスペリエンスの向上May 14, 2025 am 12:18 AM

html5aimstoenhancewebdevelymentanduserexperiencetheTheTheTheTheTheTheTheTheTructure、multimedieingegration、およびperformanceImprovements.1)semanticelementslike like like ,, and and requrovedababilityandaccessibility.2)andTagsallowseamlessmultimediaemdiding withoutplugins.3)

HTML5:安全ですか?HTML5:安全ですか?May 14, 2025 am 12:15 AM

html5isnotinherecureを使用しますが、featurescanleadtosecurityrisksifmisusedorimpremented.1)usetheSsandboxattribution controlembeddeddeddeddedentandPreventvulnerabilitieslikeclickjacking.2)

HTML5は、古いHTMLバージョンと比較して目標を達成しますHTML5は、古いHTMLバージョンと比較して目標を達成しますMay 14, 2025 am 12:14 AM

html5aimedtoeenhancewebdevelopmentbyintroducingsmanticelements、nativemultimediasupport、改善、およびオフリンの実行可能性、対照、html.1)itintroductuedsemantictagslike、nattructurcturcurean desieand.2)

CSS:IDセレクターを使用するのは悪いですか?CSS:IDセレクターを使用するのは悪いですか?May 13, 2025 am 12:14 AM

IDセレクターを使用することは、CSSでは本質的に悪くはありませんが、注意して使用する必要があります。 1)IDセレクターは、一意の要素またはJavaScriptフックに適しています。 2)一般的なスタイルの場合、クラスセレクターはより柔軟で保守可能であるため、使用する必要があります。 IDとクラスの使用のバランスをとることにより、より堅牢で効率的なCSSアーキテクチャを実装できます。

HTML5:2024年の目標HTML5:2024年の目標May 13, 2025 am 12:13 AM

HTML5'SGOALSIN2024FOCUSONREFINIMINGANDOPTIMIZATION、notnewfeatures.1)強化された拡張性と拡張効率化されたレンダリング.2)

HTML5が改善しようとした主な領域は何ですか?HTML5が改善しようとした主な領域は何ですか?May 13, 2025 am 12:12 AM

html5aimed toemprovewebdevelymentinfourkeyareas:1)multimediasupport、2)セマンティクス構造、3)フォームキャピリティ、および4)offlineandstorageoptions.1)html5introduededelements、simplifiedediaembedingemencemanteddim.2)

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。