ホームページ > ウェブフロントエンド > jsチュートリアル > 分析: ジャンプのルーティング時に React-Router トリガーが 2 回レンダリングされる

分析: ジャンプのルーティング時に React-Router トリガーが 2 回レンダリングされる

巴扎黑
リリース: 2017-07-22 13:57:23
オリジナル
2199 人が閲覧しました

問題: React-Router がジャンプすると、レンダリングが 2 回トリガーされ、ページが繰り返しレンダリングされます。

理由: プロジェクトで使用されているreact-router ^3.x.x。 React-router がジャンプすると、this.props.location.action の値には 2 つの状態があります。どちらの状態でもレンダリングがトリガーされます。したがって、ページは 2 回レンダリングされます。

1. リンクをクリックすると this.props.location.action=PUSH、 2. ブラウザが前後に移動すると this.props.location.action=POP となります。

そのため、リンクをクリックすると、最初はステータスがPUSHになり、次にブラウザが前後に移動し、ステータスがPOPに変わります。

解決策: ルーティング層で、react 定期関数 shouldComponentUpdate (ライフサイクルに詳しくない学生は、別途情報を確認してください) を使用して、this.props.location.action が価値があるかどうかを判断します。プロジェクトの実際のニーズに応じて、値が PUSH であるか POP であるかを決定します。

プロジェクトの一部の要件で window.location.hash='xxxxxxxx' を使用する必要があるため、POP を選択しました。この場合、PUSH をトリガーできないため、ルーティング ジャンプは失敗します。

1 shouldComponentUpdate() {2         // POP 浏览器前进后退, PUSH 点击Link3         return this.props.location.action === "POP"4 }
ログイン後にコピー

注: Facebook 関係者は、この状況は、react-router のバグであり、^4.x.x で修正されていると述べました。

上記の内容はすべて私が実際のプロジェクト開発中に遭遇したものですので、遭遇するバグは人それぞれですので、ぜひ教えてください。ありがとう!

以上が分析: ジャンプのルーティング時に React-Router トリガーが 2 回レンダリングされるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート