react之hooks

Hook?是 React 16.8 的新增特性土铺。它可以讓你在不編寫 class 的情況下使用 state尸曼,一般搭配函數(shù)式組件使用帆焕。

在React 16.8之前帖旨,函數(shù)式組件只能作為無狀態(tài)組件(只讀組件),即不能進行狀態(tài)管理彬呻。

Hooks簡單舉例:


useState簡單舉例

常用hooks介紹

useState() hooks狀態(tài)鉤子

搭配函數(shù)式組件衣陶,主要是可以進行組件的狀態(tài)管理,好處是不像傳統(tǒng)state需要注意this指向(函數(shù)式組件中沒有this)闸氮。

一般用法 const [ a , setA? ] = useState(初始值)

a表示組件需要聲明的變量a剪况,setA允許你在組件其它的位置對a的數(shù)據(jù)進行改變setA(2),即a的值將為2

一個組件中可以聲明多個useState()

useEffect()hooks副作用鉤子

uesEffect()可以與class組件中的三個周期函數(shù)作用相同蒲跨,可以把?useEffect?Hook 看做?componentDidMount译断,componentDidUpdate?和?componentWillUnmount?這三個函數(shù)的組合。


document的title使用useEffect()

我們運行代碼發(fā)現(xiàn)或悲,title的You clicked ${count} times count有初始值隨著點擊值增加孙咪,即如果要在class組件中實現(xiàn)的話則需要2個周期函數(shù)componentDidMount和componentDidUpdate

默認情況下,它在第一次渲染之后每次更新之后都會執(zhí)行巡语。

與?componentDidMount?或?componentDidUpdate?不同翎蹈,使用?useEffect?調(diào)度的 effect 不會阻塞瀏覽器更新屏幕,這讓你的應(yīng)用看起來響應(yīng)更快男公。

如何控制useEffect()

? useEffect(() => {?});荤堪,當為此形式時,相當于componentDidMount和componentDidUpdate理澎,即相關(guān)數(shù)據(jù)每一次更新刷新界面都將調(diào)用useEffect()逞力,?useEffect(() => {?}曙寡,[ ]);為此形式時糠爬,相當于componentDidMount,只在頁面掛載時執(zhí)行一次举庶,相關(guān)數(shù)據(jù)改變時不重新調(diào)用useEffect()执隧;?useEffect(() => {?},[ count ]);相當于componentDidMount和componentDidUpdate,但是注意這里只會在count變化時重新調(diào)用useEffect()镀琉;

useEffect(() => {?

?需要在組件銷毀時清除的數(shù)據(jù)或者方法等 峦嗤;

return function clearn({

需要在組件銷毀時清除的數(shù)據(jù)或者方法等

})? },);

返回箭頭函數(shù)同樣可以在組件銷毀時清除

此時相當于componentDidMount和componentDidUpdate和componentDidUnmount

其他的Hook(具體參考react hooks官方文檔屋摔,這里簡單介紹一下作用及用法)

useContext()? 獲取context 對象? 用法:const value = useContext(MyContext);

useCallback() 緩存回調(diào)函數(shù)烁设,避免傳入的回調(diào)每次都是新的函數(shù)實例化而導致依賴組件重新渲染;用法:const memoizedCallback = useCallback(()=>{doSomething(a,b);},[a,b],);把內(nèi)聯(lián)回調(diào)函數(shù)及依賴項數(shù)組作為參數(shù)傳入?useCallback钓试,它將返回該回調(diào)函數(shù)的 memoized 版本装黑,該回調(diào)函數(shù)僅在某個依賴項改變時才會更新;

useMemo()緩存每次傳入的props弓熏,避免依賴的組件每次都重新渲染恋谭;用法:const memoizedValue = useMemo (()=>computeExpensiveValue(a,b),[a,b]);把“創(chuàng)建”函數(shù)和依賴項數(shù)組作為參數(shù)傳入?useMemo,它僅會在某個依賴項改變時才重新計算 memoized 值挽鞠。

useRef() 返回一個可變的 ref 對象疚颊,獲取組件的真實節(jié)點;用法:const refContainer = useRef(initialValue);

自定義 Hook(詳細參考react hooks官方文檔)

提取自定義 Hook

當我們想在兩個函數(shù)之間共享邏輯時信认,我們會把它提取到第三個函數(shù)中材义。而組件和 Hook 都是函數(shù),所以也同樣適用這種方式嫁赏。

自定義 Hook 是一個函數(shù)母截,其名稱以 “use” 開頭,函數(shù)內(nèi)部可以調(diào)用其他的 Hook橄教。?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末清寇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子护蝶,更是在濱河造成了極大的恐慌华烟,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件持灰,死亡現(xiàn)場離奇詭異盔夜,居然都是意外死亡,警方通過查閱死者的電腦和手機堤魁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門喂链,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妥泉,你說我怎么就攤上這事椭微。” “怎么了盲链?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵蝇率,是天一觀的道長迟杂。 經(jīng)常有香客問我,道長本慕,這世上最難降的妖魔是什么排拷? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮锅尘,結(jié)果婚禮上监氢,老公的妹妹穿的比我還像新娘。我一直安慰自己藤违,他們只是感情好忙菠,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纺弊,像睡著了一般牛欢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淆游,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天傍睹,我揣著相機與錄音,去河邊找鬼犹菱。 笑死拾稳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的腊脱。 我是一名探鬼主播访得,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼陕凹!你這毒婦竟也來了悍抑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杜耙,失蹤者是張志新(化名)和其女友劉穎搜骡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佑女,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡记靡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了团驱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摸吠。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嚎花,靈堂內(nèi)的尸體忽然破棺而出寸痢,到底是詐尸還是另有隱情,我是刑警寧澤贩幻,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布轿腺,位于F島的核電站两嘴,受9級特大地震影響丛楚,放射性物質(zhì)發(fā)生泄漏族壳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一趣些、第九天 我趴在偏房一處隱蔽的房頂上張望仿荆。 院中可真熱鬧,春花似錦坏平、人聲如沸拢操。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽令境。三九已至,卻和暖如春顾瞪,著一層夾襖步出監(jiān)牢的瞬間舔庶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工陈醒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惕橙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓钉跷,卻偏偏與公主長得像弥鹦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子爷辙,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 本文全面介紹了React Hooks的所有API概念彬坏、用法、豐富的demo以及部分底層原理膝晾。 實際上苍鲜,Rea...
    南宮__閱讀 3,584評論 0 6
  • 前言 React 在 v16.8 的版本中推出了 React Hooks 新特性。在我看來玷犹,使用 React Ho...
    觴O閱讀 2,338評論 0 7
  • Hooks Api 索引 基礎(chǔ) Api useStateuseEffectuseContext返回一個 state...
    北故城閱讀 410評論 0 0
  • 前言 文章雖然比較長混滔,但是可以說是全網(wǎng)最全最有用的總結(jié)了,學會的記得分享歹颓、點贊坯屿、收藏、謝謝支持 React 在 v...
    流動碼文閱讀 1,057評論 0 2
  • 一巍扛、場景 先理解什么是 hook领跛,react 對它的定義是: 它可以讓你在不編寫 class 的情況下,讓你在函數(shù)...
    AizawaSayo閱讀 1,431評論 0 2