千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  應(yīng)聘面試  >  html5面試題  > 說(shuō)說(shuō)在使用Hooks的過(guò)程中,需要注意什么

說(shuō)說(shuō)在使用Hooks的過(guò)程中,需要注意什么

來(lái)源:千鋒教育
發(fā)布人:syq
時(shí)間: 2022-11-16 16:58:53 1668589133

  1 首先注意到就是 useState

  里面方法是異步的,所以不要在后面連續(xù)調(diào)用,由于react方法是批量異步調(diào)用,并不是每次調(diào)用修改方法都執(zhí)行,所以需要用到callback寫法 const [count, setCount] = useState(0); const add = () => { setCount(count + 1); setCount(count + 1); setCount(count + 1); setCount(count + 1);

  // 就算執(zhí)行多次 其實(shí)還是會(huì)只執(zhí)行一次

  //class組件是用一樣的 }; 修改后 const add = () => { setCount(count => count + 1);

  //這種回調(diào)函數(shù)的寫法 setCount(count => count + 1); setCount(count => count + 1); setCount(count => count + 1);

  // class組件 this.setState(prev=>({count: prev.count})) };

在使用Hooks的過(guò)程中

  2 由于useState的是異步的,不要在修改后直接使用數(shù)據(jù)。

  可以先修改數(shù)據(jù),判斷數(shù)據(jù),也可以利用useEffec,useMemo等等通過(guò)監(jiān)聽數(shù)據(jù)執(zhí)行 const [count, setCount] = useState(0); const add = () => { setCount(count + 1); if(count>=10) { // 一個(gè)邏輯這樣的寫的話會(huì)執(zhí)行上一次吃結(jié)果} }; 正確使用

  1 const add = () => { let n = count +1 if(n){ //邏輯 } setCount(n) }; 正確

  2 : const add = () => [ setCount(count+1) ] useEffect(()=>{ // 這里是邏輯 },[count])

  3 useEffect hook的使用

  useEffect 這個(gè)hook的使用,每一個(gè)消耗性能的內(nèi)容都可以通過(guò)return 來(lái)消除 useEffect(()=>{ // 邏輯1 return ()=>{ // 清楚邏輯1的副作用 } },[監(jiān)聽的值])

  4 如果子組件是函數(shù)組件需要利用useImperativeHandle ,forWard

  useRef 可以獲取組件的數(shù)據(jù),也可當(dāng)常量的值來(lái)使用,注意獲取數(shù)據(jù)使用的時(shí)候函數(shù)組件特別需要注意,如果子組件是函數(shù)組件需要利用useImperativeHandle ,forWard

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
前端JavaScript面試題——js時(shí)間戳轉(zhuǎn)換時(shí)間的方法

小伙伴們!今天我們要來(lái)聊聊前端JavaScript的一個(gè)面試題,那就是如何把時(shí)間戳轉(zhuǎn)換成普通的時(shí)間格式呢?這個(gè)問(wèn)題可是前端面試中的??团?別擔(dān)心,...詳情>>

2023-08-04 08:59:00
Html5面試題之網(wǎng)絡(luò)中使用最多的圖片格式有哪些?

在網(wǎng)絡(luò)中使用最多的圖片格式主要有JPEG、PNG和GIF。下面我將為你詳細(xì)介紹這三種圖片格式。JPEG(JointPhotographicExpertsGroup):JPEG是一種廣...詳情>>

2023-07-19 15:56:35
解釋一下什么是跨域請(qǐng)求?

答案:跨域請(qǐng)求是指在瀏覽器中,通過(guò)JavaScript在一個(gè)域名下發(fā)起對(duì)另一個(gè)域名的請(qǐng)求。由于瀏覽器的同源策略(Same-OriginPolicy)限制,跨域請(qǐng)求...詳情>>

2023-07-18 14:04:00
瀏覽器的同源策略機(jī)制

所以我們可以將請(qǐng)求發(fā)送到自己服務(wù)器,然后自己服務(wù)器去請(qǐng)求目標(biāo)接口資源,最后自己服務(wù)器將接口資源返回給當(dāng)前頁(yè)面,類似于找外援代替自己請(qǐng)求...詳情>>

2022-08-23 17:45:21
闡述一下http1.0與http2.0的區(qū)別,及http和https區(qū)別

HTTP2.0和HTTP1.X相比的新特性 - 新的二進(jìn)制格式(Binary Format),HTTP1.x的解析是基于文本,基于文本協(xié)議的格式解析存在天然缺陷,文本的表...詳情>>

2022-08-23 17:45:15
快速通道