摘要:不知道大家有沒有使用過他的作用和中的差不多吧在需要讀取的高度寬度的時候特別需要說到現(xiàn)在基本已經(jīng)講完了除了我將會放在篇中講述相關(guān)文章全面轉(zhuǎn)換攻略一本篇之全面轉(zhuǎn)換攻略二本篇剩余全面轉(zhuǎn)換攻略三全局存儲解決方案
useCallback,useMemo
因?yàn)檫@兩個 api 的作用是一樣的,所以我放在一起講;
語法:
function useMemo(factory: () => T, deps: DependencyList | undefined): T; function useCallback any>(callback: T, deps: DependencyList): T;
區(qū)別在于第一個參數(shù),還有參數(shù)的傳遞,另外 useCallback 中 DependencyList 是一個必須值
這兩個 api 的作用基本就是緩存數(shù)據(jù)/方法
使用過 react 的人都知道,在組件傳遞值的時候,如果 props 中某一值對象引用發(fā)生變化,就會發(fā)生重新渲染,即使前后2個對象是完全相同的;
這2個參數(shù)就是為了解決這個問題,另外也有可以減輕一些方法的rerender的速度;
useRef作用基本是取代 class 中的 createRef,在此不多細(xì)說
useContext作用基本是取代 class 中的 Context 中 Context.Provider ,接受參數(shù) Context,因?yàn)榭赡軙卸鄬?context,所以這個參數(shù)是必須的,不然無法辨別
useImperativeHandle語法:
function useImperativeHandle(ref: Ref |undefined, init: () => R, deps?: DependencyList): void;
官網(wǎng)是叫 useImperativeMethods,但是我在 @types/[email protected] 中,是叫做 useImperativeHandle的,不過函數(shù)名還是以實(shí)際為準(zhǔn)
在官網(wǎng)中,他的作用是這樣解釋的:
useImperativeMethods自定義使用ref時公開給父組件的實(shí)例值。 與往常一樣,在大多數(shù)情況下應(yīng)避免使用refs的命令式代碼。
這個 api 的使用必定伴隨著 forwardRef 這個 api, 使用率基本較低;
官方例子:
function FancyInput(props, ref) { const inputRef = useRef(); useImperativeMethods(ref, () => ({ focus: () => { inputRef.current.focus(); } })); return ; } FancyInput = forwardRef(FancyInput);
在此示例中,呈現(xiàn)的父組件將能夠調(diào)用fancyInputRef.current.focus()。
簡單的說就是講子組件中的創(chuàng)建方法暴露給父組件
useMutationEffect簽名與useEffect相同,但在更新兄弟組件之前,它在React執(zhí)行其DOM突變的同一階段同步觸發(fā)。 使用它來執(zhí)行自定義DOM突變。
同樣的 @types/[email protected] 沒有這個函數(shù)的聲明;
不過官網(wǎng)中 大多是告誡盡量少用此函數(shù)
語法:
function useLayoutEffect(effect: EffectCallback, deps?: DependencyList): void;
參數(shù)基本和 useEffect 相同
官方所說的效果:
簽名與useEffect相同,但在所有DOM突變后它會同步觸發(fā)。 使用它從DOM讀取布局并同步重新渲染。 在瀏覽器有機(jī)會繪制之前,將在useLayoutEffect內(nèi)部計劃的更新將同步刷新。
不知道大家有沒有使用過 vue,他的作用和 vue 中的 nexttick 差不多吧;
在需要讀取 dom 的高度,寬度的時候特別需要
說到現(xiàn)在, api 基本已經(jīng)講完了,除了 useReducer, 我將會放在 redux 篇中講述
相關(guān)文章:react hooks 全面轉(zhuǎn)換攻略(一) react本篇之useState,useEffect
react hooks 全面轉(zhuǎn)換攻略(二) react本篇剩余 api
react hooks 全面轉(zhuǎn)換攻略(三) 全局存儲解決方案
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103538.html
摘要:經(jīng)典案例此例子中是最新的語法其中是他的值是用來設(shè)置值的函數(shù)是初始值該初始值可以接受任何參數(shù)但是記得當(dāng)他接受為一個函數(shù)時就變成了延遲初始化該函數(shù)返回值即為這兩種初始化方式是相等的但是在函數(shù)為初始值時會被執(zhí)行一次這里只會在初始化的時候執(zhí)行中的 useState 經(jīng)典案例: import { useState } from react; function Example() { con...
摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號手機(jī)號中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語法在中使用正則表達(dá)式在中使 JS高級技巧 本篇是看的《JS高級程序設(shè)計》第23章《高級技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時指出書里的一些問題。將會討論安全的類型檢測、惰性載入函數(shù)、凍結(jié)對象、定時器等話題。1. 安全的類型檢測...
摘要:版本發(fā)布月日,官博發(fā)文宣告正式發(fā)布。官方文檔提供了如下的示例終端上的輸出熱門文章我在阿里云做前端抓住我們核心的競爭力,并同時發(fā)現(xiàn)業(yè)務(wù)中的問題,跨端推進(jìn)解決,這是最好的出路。 showImg(https://segmentfault.com/img/remote/1460000019038442); 【阿里云 TXD 前端月刊】- 熱門前端技術(shù)快報,聚焦業(yè)界新視界;前端領(lǐng)域急速發(fā)展的節(jié)奏...
摘要:版本發(fā)布月日,官博發(fā)文宣告正式發(fā)布。官方文檔提供了如下的示例終端上的輸出熱門文章我在阿里云做前端抓住我們核心的競爭力,并同時發(fā)現(xiàn)業(yè)務(wù)中的問題,跨端推進(jìn)解決,這是最好的出路。 showImg(https://segmentfault.com/img/remote/1460000019038442); 【阿里云 TXD 前端月刊】- 熱門前端技術(shù)快報,聚焦業(yè)界新視界;前端領(lǐng)域急速發(fā)展的節(jié)奏...
閱讀 1972·2021-10-25 09:48
閱讀 2801·2021-09-22 14:59
閱讀 1763·2019-08-29 16:52
閱讀 870·2019-08-29 16:07
閱讀 2311·2019-08-29 12:38
閱讀 1766·2019-08-26 13:23
閱讀 886·2019-08-26 11:49
閱讀 3282·2019-08-26 10:56