[解決済み】React.ComponentとReact.PureComponentの比較【終了しました
質問
公式
Reactドキュメント
は、" と記述しています。
React.PureComponent
's
shouldComponentUpdate()
は浅くしか比較しないので、状態が "深い" である場合は、これを避けるように助言します。
このように考えると、なぜ
React.PureComponent
Reactのコンポーネントを作成するときに?
質問内容 :
-
を使用した場合のパフォーマンスへの影響はありますか?
React.Component
を目指すことを検討してもよいと思います。React.PureComponent
? -
私は推測しています
shouldComponentUpdate()
のPureComponent
は、浅い比較しかできません。もしそうであれば、当該メソッドはより深い比較に使用できないのでしょうか? -
さらに
React.PureComponent
'sshouldComponentUpdate()
skip prop updates for whole component subtree" - これは、プロップの変更が無視されるということでしょうか?
これを読んで疑問が生じました ミディアムブログ 参考になれば幸いです。
解決するには?
との大きな違いは
React.PureComponent
と
React.Component
は
PureComponent
が行います。
浅い比較
状態変化時に つまり、スカラー値を比較するときはその値を比較し、オブジェクトを比較するときは参照のみを比較します。これは、アプリのパフォーマンスを向上させるのに役立ちます。
を使うべきでしょう。
React.PureComponent
以下の条件のいずれかを満たす場合。
- ステート/プロップスはイミュータブルオブジェクトでなければなりません。
- State/Propsは階層構造を持たない。
-
を呼び出す必要があります。
forceUpdate
データが変更されたとき
を使用している場合
React.PureComponent
は、すべての子コンポーネントも純粋であることを確認する必要があります。
React.componentを使用することで、パフォーマンスへの影響はあるのでしょうか? React.PureComponentにすることを検討しますか?
はい、アプリのパフォーマンスが向上します(浅い比較のため)。
<ブロッククオートPurecomponentのshouldComponentUpdate()は、以下の処理のみを行うものと思われます。 浅い比較。この場合、当該メソッドを使用することはできません。 より深い比較のため?
ご明察です。上に書いた条件のどれかを満たせば使えるはずです。
さらに、React.PureComponentのshouldComponentUpdate()はpropをスキップします。 は、コンポーネントサブツリー全体の更新を行います" - これは、プロップ の変更は無視されるのですか?
はい、浅い比較で違いが見つからなかった場合、プロップの変更は無視されます。
関連
-
[解決済み】React - 式は1つの親要素を持つ必要がありますか?
-
[解決済み] エラー: 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】コンポーネントの定義に表示名がない react/display-name
-
[解決済み】ReactJS: マテリアルuiのブレークポイントについて
-
[解決済み] sh: react-scripts: npm start の実行後にコマンドが見つからない。
-
[解決済み] React-Router 4 キャッチオールルート
-
[解決済み] nextjsで異なる.envファイルを使用するには?
-
[解決済み] 拡張子.tsと.tsxの違いは何ですか?どちらもreactのタイプスクリプトファイルの拡張子として使用されます。では、どこで使うべきなのでしょうか?
-
[解決済み] Reactプロジェクトに.envファイルを追加する
-
[解決済み] リアクトのシャローコンパールはどのように機能するのか
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プリセットファイルはオブジェクトのエクスポートができない
-
[解決済み] Next.jsでWebSocketを利用する
-
[解決済み] Webpack + Babelです。プリセット "es2015 "がディレクトリに相対して見つからなかった
-
[解決済み] リアクトです。<tr>は<td>の子として表示できません。コメント > td > tr を参照してください。
-
[解決済み] TypeError: reactjs の未定義のプロパティ 'status' を読み取ることができません。
-
[解決済み] 'Proptypes'が定義されていない
-
[解決済み] Cross-envでyarnの実行時にenv変数が変更されない。
-
[解決済み] componentDidUpdate'メソッドはいつ使用するのですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】Reactの機能的なステートレスコンポーネント、PureComponent、Component、どのような違いがあり、いつ何を使うべきですか?