反応ジャンプ後にルートが変更されてもページが更新されない場合の解決策

反応ジャンプ後にルートが変更されてもページが更新されない場合の解決策

質問

この問題には多くの理由があるようです。私の問題は、パラメータ付きのURLを更新できないことです。ルーター5.0バージョンでは、withRouter関連コンポーネントを使用してページにジャンプするには、次のようになります。

ここに画像の説明を挿入

ルーティングコード

ここに画像の説明を挿入

解決

ルーティング コンポーネントの最上位要素にキーを追加すると、通常のジャンプはパスに基づいて識別されるため、ルートの認識が向上しますが、パスにパラメーターが含まれている場合は、ルートを正確に識別できません。ただし、ページにジャンプすると、各アドレスのロケール オブジェクトにキーが追加されます。次のように印刷します

 // コンポーネントのマウント componentDidMount() {
    コンソールにログ出力します。
  }

ここに画像の説明を挿入

このキーをルートの最上位要素にバインドすることで、ルートを正確に特定できます。

 与える() {
    戻る (
      *これが鍵です*/
      <div キー = {this.props.location.key}>
          <スイッチ>
            <ルートの正確なパス="/" コンポーネント={Home} />
            <ルートの正確なパス="/products/:id" コンポーネント={Products} />
            <ルートの正確なパス="/about" コンポーネント={About} />
            <ルートの正確なパス="/solution" コンポーネント={ソリューション} />
            <ルート
              ちょうど
              パス="/ソリューションの詳細/:id"
              コンポーネント={ソリューションの詳細}
            />
            <ルートの正確なパス="/download" コンポーネント={ダウンロード} />
            <Route path="/about" component={ダウンロード} />
            <ルートの正確なパス="/details/:id" コンポーネント={詳細} />
            <ルート パス="/contact" コンポーネント={連絡先} />
            <ルートコンポーネント={ErrorPage} />
          </スイッチ>
      </div>
    );
  }

ただし、this.props が空のオブジェクト {} になっている場合があります。これは、コンポーネントを関連付けるために withRouter を使用しなかったことが原因である可能性があります。関連付けるだけです。 app.js は関連付けることができず、withrouter はルーティング コンポーネントまたは app.js のサブコンポーネントにのみ関連付けることができることに注意してください。

React をインポートします。{ コンポーネント } から "react" をインポートします。
「react-router」から { withRouter } をインポートします。

クラス routers は Component を拡張します {
 /**
  * ライフサイクル機能 */
 // コンポーネントのマウント componentDidMount() {
   コンソールにログ出力します。
 }
 与える() {
   戻る (
     <div キー = {this.props.location.key}>
     </div>
   );
 }
}
デフォルトの withRouter(routers) をエクスポートします。

リアクトジャンプ後にルートが変更されてもページが更新されない問題の解決策に関するこの記事はこれで終わりです。リアクトジャンプ後にページが更新されない問題に関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • React-RouterでUrlパラメータが変更されてもページが更新されない問題の解決方法を詳しく解説
  • react-router browserHistory 更新ページの 404 問題の解決方法

<<:  Ubuntu 18.04 は pyenv、pyenv-virtualenv、virtualenv、Numpy、SciPy、Pillow、Matplotlib をインストールします

>>:  MySQLの始め方から諦め方まで徹底解説 - インストール

推薦する

startup.bat をダブルクリックすると Tomcat がクラッシュする問題の解決方法の詳細な説明

Tomcat を学習したばかりのプログラマーにとって、これはよくある間違いです。 1. 環境変数の問...

Docker に Solr 8.6.2 をインストールし、中国語の単語セグメンターを構成する方法

1. 環境バージョンDocker バージョン 19.03.12セントロス7ソル8.6.2 2. Do...

MySQL 5.6 のインストール手順(画像とテキスト付き)

MySQL はオープンソースの小規模リレーショナル データベース管理システムです。現在、MySQL...

マージンのマージの問題を解決する

1. 兄弟要素の余白を結合する効果は次のようになります: (2 つの間の間隔は 150 ピクセルでは...

VirtualBox での CentOS 8.1 仮想マシンのインストールを最小限に抑える詳細なチュートリアル

1. 関連ツールと画像をダウンロードするダウンロードリンクバーチャルボックス: https://do...

MySQL 5.7 共通データ型

——「MySQL in Simple Terms (第 2 版)」からのメモ数値型整数型バイト最小最...

MySQL で '%' を含むフィールドをクエリする方法の詳細な説明 (ESCAPE の使用法)

SQLのlike文では、例えば SELECT * FROM user WHERE username...

Angularルーティングサブルートの詳細な説明

目次1. サブルート構文2. 例1. 2つの新しいコンポーネントを作成し、その内容を変更する2. ル...

ZooKeeper をベースにした Hadoop 高可用性クラスタの構築のチュートリアル図

目次1. 高可用性の概要1.1 可用性の高い全体アーキテクチャ1.2 QJMに基づく共有ストレージシ...

Dayjs を使用して Vue で一般的な日付を計算する方法

vue を使用してプロジェクトを開発する場合、フロントエンドでは次のような日付と時刻を計算する必要が...

小さな画像をクリックしたときに更新せずに大きな画像コードが表示されるようにLightboxを実現するためにCSSを使用する

小さな画像をクリックしたときに更新せずに大きな画像コードが表示されるようにLightboxを実現する...

Vueはファイルのアップロードとダウンロードを実装します

この記事では、参考までにVueのファイルのアップロードとダウンロードの具体的なコードを紹介します。具...

LinuxサーバにおけるNginxとApacheの共存の実装方法の分析

この記事では、Linux サーバー上で Nginx と Apache の共存を実装する方法について説...