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

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

質問

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

推薦する

Dockerリポジトリの一般的なコマンドの詳細な説明

ログイン dockerログインdocker login コマンドを実行し、ユーザー名、パスワード、メ...

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by 問題を解決する

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by の問題...

MySQL (5.6 以下) の JSON 解析の詳細な例

MySQL(5.6以下)はjsonを解析します #json 解析関数 DELIMITER $$ `j...

Vue-cli4 ルーティング構成の詳細な理解

目次序文 - Vue ルーティング1. 最も基本的なルーティング構成1. router/index....

JS関数の継承について学ぶ記事

目次1. はじめに: 2. プロトタイプチェーン継承: 3. コンストラクタ継承の借用(オブジェクト...

JavaScript でオブジェクトをトラバースする 5 つの方法 サンプルコード

目次準備する5つの武器…のためにオブジェクト.キーオブジェクト.getOwnPropertyName...

入力テキストボックスの長さをコンテンツに応じて変更する方法

初め:コードをコピーコードは次のとおりです。 <input type="text&q...

SQL と NoSQL の違いのまとめ

主な違い: 1. タイプSQL データベースは主にリレーショナル データベース (RDBMS) とし...

jsプロジェクトでの双方向データバインディングの簡単な実装方法

目次序文パブリッシュ・サブスクライバ・パターン結果電話要約する序文双方向データ バインディングとは、...

CSS3アニメーションジャミングソリューションについての簡単な説明

なぜ詰まっているのでしょうか?言及しなければならない前提があります。フロントエンド開発者は皆、ブラウ...

JavaScript の継承についてどれくらい知っていますか?

目次序文コンストラクタ、プロトタイプオブジェクト、インスタンスオブジェクトの関係プロトタイプチェーン...

JavaScript の構成と継承の説明

目次1. はじめに2. プロトタイプチェーン継承3. コンストラクタの継承4. 組み合わせ継承1. ...

CSSをインポートする方法は何ですか?linkと@importの違いは何ですか?選択方法

Taobao のウェブページはインポートを使用していますが、多くのウェブサイトはリンクを使用していま...

Docker Composeオーケストレーションツールの詳細な説明

Docker の作成Docker Compose は、複数の Docker コンテナを定義して実行す...

Vue3+TypeScriptはaxiosをカプセル化し、リクエスト呼び出しを実装します

まさか、2021年になってもTypeScriptについて聞いたことがない人がいるなんて?プロジェクト...