memo、useCallback、useMemo三者的區別


相同點

1.都是在函數式組件中使用
2.都是為了阻止子組件的被動渲染(父組件重新render,子組件也跟着render)

不同點

1.memo

memo類似於PureCompoent 作用是優化組件性能,防止組件觸發重渲染
不足: 如果參數中含有函數不能阻止
有點: 緩存組件
使用場景: 不給子組件傳遞函數,並且子組件根據自身以來渲染

2.useMemo

useMemo其實和memo是一樣的
不足: 如果參數中含有函數不能阻止
優點: 緩存變量(返回的變量)
使用場景: 不給子組件傳遞函數,並且子組件根據自身以來渲染

useMemo使用

  • 在子組件中通過memo方法,對子組件進行包裹
  • 在父組件中,通過useMemo對傳給子組件的數據進行包裹
const ChildComponent = memo(() => {
  return <div></div>;
});

const ParentComponent = () => {
 const [name, setName] = useState('tom');
 const userInfo = useMemo(() => {
  return {name, age: 20};
 },[]);
};

3.useCallback

useCallback是解決上面兩個的不足的
優點: 可以緩存函數,(返回的是函數,每次都返回新的函數)
使用場景: 給子組件傳遞函數,將要傳遞的函數用useCallback包裹起來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM