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

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

質問

この問題には多くの理由があるようです。私の問題は、パラメータ付きの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の始め方から諦め方まで徹底解説 - インストール

推薦する

WeChatミニプログラムはどのようにしてユーザー情報とユーザーの電話番号を同時に取得するのか

今日ログインページを書いていたとき、個人情報と携帯電話番号を認証する必要がありましたが、ページにボタ...

CentOS7にNginxを素早くインストールする方法を教えます

目次1. 概要2. Nginxインストールパッケージをダウンロードする3. 依存パッケージをインスト...

WeChatアプレットで画像の幅と高さを取得する方法

起源最近、私は要件 A に取り組んでいます。そこには、次のように記述される小さな機能ポイントがありま...

iframe パラメータの説明と例

<iframe src=”test.jsp” width=”100″ height=”50″ ...

スワイパープラグインを使用して Vue でカルーセルを実装する例

目次vue - スワイパープラグインを使用してカルーセルを実装するカルーセルのバグを解決するには、w...

登録フォームのデザインルール

随分前に「Patterns for Sign Up & Ramp Up」を読み終えました。今...

シンプルなページカウントダウンを実現するJavaScript

この記事では、参考までに、シンプルなページカウントダウンを実装するためのJavaScriptの具体的...

JS 非同期スタック トレース: await が Promise よりも優れている理由

概要async/await と Promise の基本的な違いは、await fn() は現在の関数...

Tomcat Nativeを使用してTomcat IO効率を向上させる方法の詳細な説明

目次導入Tomcatへの接続方法APR と Tomcat ネイティブtomcat で APR を使用...

Mysql SQL ステートメントのコメント

MySQL SQL ステートメントにコメントを追加できます。MySQL SQL ステートメントのコメ...

Ubuntu 20.04 オペレーティング システムの VMware インストール チュートリアル図

メモ: とにかく体験してみましょう。記録: NO.209この例の環境:仮想マシン: vmwareオペ...

Vue スクロールダウンしてさらにデータを読み込む スクロールケースの詳細な説明

vue-無限スクロールインストール npm インストール vue-infinite-scroll -...

JavaScript 日付ツールの概要

ユーティリティ = { /** * 死亡年ですか? * @return {Boolse} true...

js 属性オブジェクトの hasOwnProperty メソッドの使用

オブジェクトの hasOwnProperty() メソッドは、オブジェクトに特定の独自の (継承され...

MySQL 5.7 の同時レプリケーションにおける暗黙のバグの分析

序文当社の MySQL オンライン環境のほとんどはバージョン 5.7.18 を使用しています。このバ...