react hook

1. why hooks?

React沒有提供將可重用行為“附加”到組件的方法(例如,將其連接到store)专甩。如果你已經(jīng)使用React一段時(shí)間,你可能熟悉渲染道具高階組件等模式晚伙,試圖解決這個(gè)問題响蓉。但是這些模式要求你在使用它們時(shí)重構(gòu)組件,這可能很麻煩并且使代碼更難以遵循鄙早。如果你看一下React DevTools中一個(gè)典型的React應(yīng)用程序汪茧,你可能會發(fā)現(xiàn)一個(gè)由包含提供者,消費(fèi)者限番,高階組件舱污,渲染道具和其他抽象層的組件組成的“包裝器地獄”。雖然我們可以在DevTools中過濾它們弥虐,但這指出了一個(gè)更深層次的基本問題:React需要一個(gè)更好的原語來共享有狀態(tài)邏輯扩灯。

使用Hook,你可以從組件中提取有狀態(tài)邏輯霜瘪,以便可以獨(dú)立測試并重用珠插。Hook允許您在不更改組件層次結(jié)構(gòu)的情況下重用有狀態(tài)邏輯。?這樣可以輕松地在許多組件之間或與社區(qū)共享Hook颖对。

2.what is react hooks捻撑?

hook是允許從功能組件(function component)“掛鉤”React狀態(tài)和生命周期功能的功能。鉤子在類內(nèi)部不起作用 - 它們允許你在沒有類(class)的情況下使用React。

React提供了一些像useState這樣的內(nèi)置Hook顾患。你還可以創(chuàng)建自定義Hook以在不同組件之間重用有狀態(tài)行為番捂。我們先來看看內(nèi)置的Hooks。

Effect Hook

你之前可能已經(jīng)從React組件執(zhí)行數(shù)據(jù)提取江解,訂閱或手動更改DOM设预。我們將這些操作稱為“副作用”(或簡稱為“效果”),因?yàn)樗鼈儠绊懫渌M件犁河,并且在渲染過程中無法完成鳖枕。

Effect Hook中的useEffect增加了在功能組件執(zhí)行副作用的功能。它與React類中的componentDidMount桨螺,componentDidUpdate和componentWillUnmount具有相同的用途宾符,但統(tǒng)一為單個(gè)API。(我們將在使用Effect Hook時(shí)顯示將useEffect與這些方法進(jìn)行比較的示例彭谁。)



import { useState, useEffect } from 'react';
?function Example() {
?????const [count, setCount] = useState(0);
?????// 類似componentDidMount 和 componentDidUpdate:
?????useEffect(() => {
?????????// Update the document title using the browser API
?????????document.title = `You clicked ${count} times`;
?????});
?????return ( <div>
?????????????????????<p>You clicked {count} times</p>
?????????????????????<button onClick={() => setCount(count + 1)}> Click me </button>
?????????????????</div> );
?}?

當(dāng)你調(diào)用useEffect時(shí)吸奴,你就在告訴react運(yùn)行你的‘效果’函數(shù)當(dāng)刷新對DOM的更改后(你可以認(rèn)為是render之后)。

效果在組件內(nèi)聲明缠局,因此可以訪問其props和state则奥。默認(rèn)情況下,React在每次渲染后運(yùn)行效果 - 包括第一次渲染狭园。?

Effects還可以通過指定返回函數(shù)來清理他們读处。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市唱矛,隨后出現(xiàn)的幾起案子罚舱,更是在濱河造成了極大的恐慌,老刑警劉巖绎谦,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件管闷,死亡現(xiàn)場離奇詭異,居然都是意外死亡窃肠,警方通過查閱死者的電腦和手機(jī)包个,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冤留,“玉大人碧囊,你說我怎么就攤上這事∠伺” “怎么了糯而?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泊窘。 經(jīng)常有香客問我熄驼,道長像寒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任谜洽,我火速辦了婚禮萝映,結(jié)果婚禮上吴叶,老公的妹妹穿的比我還像新娘阐虚。我一直安慰自己,他們只是感情好蚌卤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布实束。 她就那樣靜靜地躺著,像睡著了一般逊彭。 火紅的嫁衣襯著肌膚如雪咸灿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天侮叮,我揣著相機(jī)與錄音避矢,去河邊找鬼。 笑死囊榜,一個(gè)胖子當(dāng)著我的面吹牛审胸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卸勺,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼砂沛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了曙求?” 一聲冷哼從身側(cè)響起碍庵,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悟狱,沒想到半個(gè)月后静浴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挤渐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年苹享,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挣菲。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡富稻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出白胀,到底是詐尸還是另有隱情椭赋,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布或杠,位于F島的核電站哪怔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜认境,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一胚委、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叉信,春花似錦亩冬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至佳遂,卻和暖如春营袜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丑罪。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工荚板, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吩屹。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓跪另,卻偏偏與公主長得像,于是被迫代替她去往敵國和親祟峦。 傳聞我的和親對象是個(gè)殘疾皇子罚斗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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