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

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

質問

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

推薦する

JavaScript の条件付きアクセス属性と矢印関数の紹介

目次1. 条件付きアクセス属性2. アロー関数の紹介1. 条件付きアクセス属性?. は ES2020...

さまざまなターミナルで Mac が SSH 経由でリモート サーバーに接続する方法の説明

Macはシェル(ターミナル)SSHを使用してリモートサーバーに接続します前提条件: 接続する必要があ...

MACでMYSQLデータベースのパスワードを忘れた場合の解決策

Mac オペレーティングシステムで MYSQL データベースのパスワードを忘れた場合の簡単な解決策1...

Webページ作成の質問: 画像ファイルのパス

この記事は 123WORDPRESS.COM Lightning によるオリジナルです。転載する際に...

Vueプロジェクトがグラフィック検証コードを実装

この記事の例では、グラフィック検証コードを実装するためのVueプロジェクトの具体的なコードを参考まで...

シンプルな HTML ビデオ プレーヤーを実装する方法

この記事では、シンプルな HTML ビデオ プレーヤーを実装する方法を紹介し、皆さんと共有します。詳...

Vueはキャンバスの手書き入力を使用して中国語を認識します

効果画像: 序文:最近、屋外の大画面プロジェクトに取り組んでいました。システムの入力方法は使いにくか...

Flask と Vue のフロントエンドとバックエンドを分離したプロジェクト展開のサンプル コード

以前、プロジェクトを開発しました。バックエンドのインターフェースを書くために Flask フレームワ...

IISMonitor を使用して Web ページを監視し、IIS を自動的に再起動します。

目次1. ツールの紹介2. ワークフロー3. 操作インターフェースとパラメータ設定(1)監視と再起動...

Mailtoを使えばHTMLでメールを送るのは簡単

最近、顧客のフッターメールボックスにクリックして送信するメール機能を追加しました。Baidu で検索...

負荷分散と動的・静的分離を実現するNginx+Tomcatの原理の分析

1. Nginx ロードバランシングの実装原理1. Nginxはリバースプロキシを通じて負荷分散を実...

VUE でタブページを切り替える 4 つの方法

目次1. 静的実装方法: 2. 第2のシミュレーション動的方法3. 3番目の動的データ方式4. 動的...

Docker で onlyoffice をインストールして展開する詳細なプロセス

0. システム要件CPU I5-10400F以上メモリ 16 GB、32 GBのメモリが最適ハードド...

ブラインドの特殊効果を実現するネイティブJS

この記事では、ネイティブ JS で実装されたブラインドの特殊効果を紹介します。効果は次のとおりです。...

Dockerイメージを構築する2つの方法

目次既存のイメージからイメージを更新します。イメージを最初から構築する: Docker イメージ リ...