Reactソース読解-7_038
2394 ワード
Reactソース読解-7
関数コンポーネントが同じ
このメソッドは、パフォーマンスの最適化の方法としてのみ存在します.ただし、
デフォルトでは複雑なオブジェクトのみを浅いコントラストにします.コントラストプロセスを制御する場合は、カスタム比較関数を2番目のパラメータで入力します.
コンポーネントは常に再レンダリングされ、また多くの内容が悪い.純粋なディスプレイコンポーネントは、同じ
ここでの
https://segmentfault.com/a/11...
https://dmitripavlutin.com/us...
https://zh-hans.reactjs.org/d...
memo
React.memo
は、高次コンポーネントである.React.PureComponent
とよく似ていますが、関数コンポーネントには適用されますが、class
コンポーネントには適用されません.const MyComponent = React.memo(function MyComponent(props) {
/* props */
});
関数コンポーネントが同じ
props
で同じ結果をレンダリングする場合は、React.memo
にパッケージして呼び出すことで、コンポーネントのレンダリング結果を記憶することでコンポーネントのパフォーマンスを向上させることができます.これは、この場合、React
がレンダリングコンポーネントの動作をスキップし、最後のレンダリングの結果を直接多重化することを意味する.このメソッドは、パフォーマンスの最適化の方法としてのみ存在します.ただし、
bug
が生成されるため、レンダリングを「ブロック」しないでください.デフォルトでは複雑なオブジェクトのみを浅いコントラストにします.コントラストプロセスを制御する場合は、カスタム比較関数を2番目のパラメータで入力します.
function MyComponent(props) {
/* props */
}
function areEqual(prevProps, nextProps) {
/*
nextProps render
prevProps render true,
false
*/
}
export default React.memo(MyComponent, areEqual);
React.memo()
の使用時期コンポーネントは常に再レンダリングされ、また多くの内容が悪い.純粋なディスプレイコンポーネントは、同じ
props
をレンダリングする、例えば数字の更新だけで、その他は変化しない.// Initial render
// After 1 second, views is 10
// After 2 seconds, views is 25
function MovieViewsRealtime({ title, releaseDate, views }) {
return (
Movie views: {views}
)
}
// etc
React.memo() and callback functions
ここでの
callback
とは、usecallback
react
が新たに追加するapi
をいう.まだその部分を見ていないので、とりあえずmark
const MemoizedLogout = React.memo(Logout);
function MyApp({ store, cookies }) {
const onLogout = useCallback(() => cookies.clear(), [cookies]);
return (
{store.content}
);
}
https://segmentfault.com/a/11...
https://dmitripavlutin.com/us...
https://zh-hans.reactjs.org/d...