React中useCallback useMemo到底該怎么用
useCallback記憶函數(shù)
前言
使用緣由:
防止因為組件重新渲染,導(dǎo)致方法被重新創(chuàng)建,起到緩存作用
類似監(jiān)聽器…監(jiān)聽更新然后執(zhí)行操作
介紹
防止因為組件重新渲染,導(dǎo)致方法被重新創(chuàng)建,起到緩存作用
使用
/**
* useCallback記憶函數(shù)
*/
import React, { useState, useCallback, useEffect } from 'react';
const set = new Set();
export default function Parent() {
const [count, setCount] = useState(1);
const callback = useCallback(() => {
console.log(count);
return count
}, [count]); //count更新時執(zhí)行
return (
<div>
<h4>parent count:{count}</h4>
<div>
<button onClick={() => setCount(count + 1)}>+</button>
</div>
<Child callback={callback} />
</div>
)
}
const Child = ({callback}) =>{
const [count,setCount] = useState(0);
useEffect(()=>{
setCount(callback())
},[callback]) //當(dāng)callback更新時執(zhí)行callback函數(shù),得到parent組件最新的count
return <child>
count:{count}
</child>
} useMemo記憶組件
兩者區(qū)別
與useCallback的區(qū)別
- useCallback不會執(zhí)行第一個參數(shù)函數(shù),而是將它返回給你,而useMemo會執(zhí)行第一個函數(shù)并且將函數(shù)執(zhí)行結(jié)果返回給你
- 類似監(jiān)聽器…監(jiān)聽更新然后執(zhí)行操作
使用
/**
* useMemo記憶組件
*/
import React, { useState, useMemo } from 'react';
export default function Memos() {
const [count, setCount] = useState(1);
const memo = useMemo(() => {
console.log("count更新了"+count);
return count
}, [count]); //count更新時執(zhí)行
return <div>
<h4>{count}</h4>
<div>
<button onClick={() => setCount(count + 1)}>+</button>
</div>
</div>;
}
到此這篇關(guān)于React中useCallback useMemo到底該怎么用的文章就介紹到這了,更多相關(guān)React useCallback與useMemo內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 源碼分析React中useCallback和useMemo
- React中useMemo和useCallback的使用小結(jié)
- React中useMemo、useCallback的具體使用
- 詳解React中的useMemo和useCallback的區(qū)別
- React中useCallback useMemo使用方法快速精通
- 解析React中useMemo與useCallback的區(qū)別
- react性能優(yōu)化useMemo與useCallback使用對比詳解
- react組件memo useMemo useCallback使用區(qū)別示例
- React useMemo和useCallback的使用場景
- React中useMemo 和 useCallback 的區(qū)別小結(jié)
相關(guān)文章
詳解React中父子組件數(shù)據(jù)傳遞和修改的方式及原理
這篇文章主要為大家詳細(xì)介紹了React中父子組件數(shù)據(jù)傳遞和修改的方式及原理,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
React+Redux實現(xiàn)簡單的待辦事項列表ToDoList
這篇文章主要為大家詳細(xì)介紹了React+Redux實現(xiàn)簡單的待辦事項列表ToDoList,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09
全棧輕量級搭配之Remix Prisma Sqlite使用分析
這篇文章主要為大家介紹了全棧輕量級搭配之Remix Prisma Sqlite使用示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
JavaScript React如何修改默認(rèn)端口號方法詳解
這篇文章主要介紹了JavaScript React如何修改默認(rèn)端口號方法詳解,文中通過步驟圖片解析介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
React如何實現(xiàn)Vue的watch監(jiān)聽屬性
在 Vue 中可以簡單地使用 watch 來監(jiān)聽數(shù)據(jù)的變化,還能獲取到改變前的舊值,而在 React 中是沒有 watch 的,今天通過本文給大家講解React實現(xiàn)Vue的watch監(jiān)聽屬性的方法,需要的朋友可以參考下2023-06-06

