Pure ComponentとMemo
1.Pure ComponentとMemo
reactでは、
state
に関連するprops
を変更すると、すべて更新される.しかし、これらの問題は次のとおりです.
同じ
props
およびstate
でも、同じ結果をレンダリングする必要はありません.→reactは、仮想DOM(仮想DOM)を使用して、現在の更新を以前と比較して、実際に更新する必要があるコンテンツのみをDOM要素に更新するので、パフォーマンスに大きな影響はありません.
componenetDidMount()
のように、コンポーネントがマウントされるたびに呼び出された関数が登録され、サーバからデータを受信するなど、これらの関数で煩雑な論理が実行されると、非常に効率的に繰り返し実行される可能性があります.import React, { PureComponent } from 'react';
// Component를 PureComponent로 바꿔주면 된다.
class Cart extends PureComponent {
state={
...
};
render() {
return (
...
);
}
}
export default Cart;
import React, { memo } from 'react';
// 컴포넌트를 memo로 감싸주면 된다.
const Example = memo((props) => {
...
return(
...
);
});
export default Example;
(この2つは似たような特性を持っているため、いずれかのPure Componentにのみ関連しています.)state
またはprops
に変化がない場合、render
関数は実行されない.これはReact.Component
とは異なり、 shouldComponentUpdate()
の実装とprops
の利用との浅い(浅い)比較には差がある.したがって、構成部品に複雑なデータ構造が含まれている場合、差異があるにもかかわらず差異がないと判断されるという誤った結果が生じる可能性があります.
state
とprops
の構造が単純であると予想される場合のみ 継承state
Pure Component
または高速比較オーバーラップデータを使用 不変オブジェクトの使用を確認します.Pure Component shouldComponentUpdate()は、コンポーネントのサブツリーに対してprops更新操作を実行しないため、サブコンポーネントが「純粋」であることを確認する必要があります。
2. Shallow Comparison
構成部品を更新する場合、現在の状態と新しい状態を比較する方法は2つあります.Shallow Comparisonの再整理:
Pure Componentの場合は、比較方法を使用し、オブジェクトの最上位参照を比較した場合は、コンポーネントを更新します.
Pure Component
forceUpdate()
は、要素が更新される必要があるかどうかを尋ねる関数である.素子の前のpropsをstateと比較し、結果に基づいてshouldComponentUpdate()
、true
を返す.❗汎用コンポーネント ライフサイクルメソッドのいずれかを実装するshouldComponentUpdateがない場合は、setStateを呼び出すたびにrender関数を呼び出す必要があります。
3. shouldComponentUpdate()
const cart1 = { name: 'lemon' };
const cart2 = cart1;
1. cart1 == cart2 //true2. ShouldComponentUpdate //false
2つの参照値が同じであるため、更新は不要であり、
false
関数はShouldComponentUpdate
を返す.const cart1 = { name: 'lemon' };
const cart2 = { name: 'lemon' };
1. cart1 == cart2 //false2. ShouldComponentUpdate //true
2つの参照値が異なり、更新が必要です.すなわち、
false
関数はShouldComponentUpdate
を返します.📚 reference
https://reactjs.org/docs/react-api.html
Reference
この問題について(Pure ComponentとMemo), 我々は、より多くの情報をここで見つけました https://velog.io/@wiostz98kr/TIL40-l-React-Lifecycle-Methodsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol