1. 2 つの setState を何回呼び出すのですか?次のコードに示すように、 ボタンをクリックすると、 回答:各 状態 = { カウント: 0 }; ハンドルクリック = () => { this.setState({ count: this.state.count + 1 }); this.setState({ count: this.state.count + 1 }); }; 与える() { console.log(`レンダリング`); 戻る ( <> <div>現在のカウント: {this.state.count}</div> <button onClick={this.handleClick}>追加</button> </> ); } 常識的に考えると、ボタンが初めてクリックされたとき、 ブラウザで上記のコードを実行するだけです: 最初、ページには その理由は、React が複数の これは、上記のコードで 2. 2 つの setState のうち、どちらが呼び出されますか?しかし、上記のコードでは、React がマージされた後にどの 状態 = { カウント: 0 }; ハンドルクリック = () => { this.setState({ count: this.state.count + 1 }); this.setState({ count: this.state.count + 2 }); // +2 に変更 }; 与える() { console.log(`レンダリング`); 戻る ( <> <div>現在のカウント: {this.state.count}</div> <button onClick={this.handleClick}>追加</button> </> ); } ブラウザでもう一度実行します。 結果は、ボタンをクリックした後、 3. setTimeout に 2 つの setState が配置されていますか?クリック イベント関数にタイマー 状態 = { カウント: 0 }; ハンドルクリック = () => { タイムアウトを設定する(() => { this.setState({ count: this.state.count + 1 }); this.setState({ count: this.state.count + 2 }); }, 0); }; 与える() { console.log(`レンダリング`); 戻る ( <> <div>現在のカウント: {this.state.count}</div> <button onClick={this.handleClick}>追加</button> </> ); } 実行結果: 結果は、ボタンをクリックした後、 これは、React の合成イベントおよびライフサイクル関数で 4. 結論
React には、合成イベントとライフサイクル関数のパフォーマンス最適化メカニズムがあります。複数の React のパフォーマンス最適化メカニズムをバイパスして、ネイティブイベントまたは React で複数の setStates が何回呼び出されるかについてはこれで終了です。React で複数の setStates が何回呼び出されるかの詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: すべてのブラウザとの完全な互換性を実現するために最適なプリセットを選択してください
目次1. 左端接頭辞原則2. 表に戻る3. インデックスプッシュダウン序文:インデックス プッシュダ...
目次1. JDKをダウンロードする(例としてjdk1.8.0を使用する) 2. JDK をインストー...
目次1. 例2. 兵士100人を作成する3. 質問4. 改善点5. エレガント? 6. JSの父から...
序文最良の方法は、あなたが思いつく最も速い方法ではないかもしれません。職場で一時的に使用するスクリプ...
前回のキャンバス ゲーム シリーズへようこそ: 《VUEがFlappy Birdを実装しました〜〜〜...
Linuxアラーム機能の紹介上記のコード: #include <stdio.h> #in...
MySQLクエリ期間の交差使用シナリオデータベース テーブルには、starttime と endti...
1 問題の説明: 1.1 Windows 10 に VMware を初めてインストールする場合、また...
この記事では、キャンバスとjsを使用して簡単な飛行機戦争を実装する方法を参考までに紹介します。具体的...
プラグインは Firefox ブラウザにインストールされます。 Web Developer プラグイ...
デフォルトでは、表のタイトルは水平方向に中央揃えされます。ALIGN 属性を使用して、タイトル テキ...
現在のスクロール オフセットを html 要素の属性に追加することで、現在のスクロール位置に基づいて...
カルーセルアニメーションは、ページの外観とインタラクティブなパフォーマンスを向上させることができます...
1. Navicat for MySQL 15をダウンロードするhttps://www.navica...
退屈していたので、突然角丸四角形の実装を思いつきました。しかし、私たちはこの話題についてあまりにも長...