為什么會(huì)有Hooks统抬?
大家都知道React的組件創(chuàng)建方式,一種是類組件危队,一種是函數(shù)式組件聪建,在React官方希望,組件不要變成復(fù)雜的容器茫陆,只做數(shù)據(jù)流金麸。開發(fā)者只根據(jù)需求,組合即可盅弛。也就是說(shuō)組件的最佳寫法應(yīng)該是函數(shù),而不是類钱骂。其實(shí)我們知道,在實(shí)際開發(fā)項(xiàng)目中類組件和純函數(shù)組件的區(qū)別是很大的挪鹏,純函數(shù)組件有著類組件不具備的多種特點(diǎn)见秽,簡(jiǎn)單比如:
1、純函數(shù)組件沒有狀態(tài)
2讨盒、純函數(shù)組件沒有生命周期
3解取、純函數(shù)組件沒有this
4、只能是純函數(shù)
從上可以看出我們所推崇的函數(shù)組件返顺,只能做UI展示的功能禀苦,涉及到狀態(tài)的管理與切換蔓肯,我們不得不用類組件或者redux,但我們知道類組件的也是有缺點(diǎn)的振乏,在項(xiàng)目開發(fā)中遇到簡(jiǎn)單的頁(yè)面蔗包,你的代碼會(huì)顯得很臃腫,并且每創(chuàng)建一個(gè)類組件慧邮,都要去繼承一個(gè)React實(shí)例调限,至于Redux,更不用多說(shuō)误澳,很久之前Redux的作者就已經(jīng)說(shuō)過(guò)耻矮,“能用React解決的問題就不用Redux”,等等一系列的話忆谓。
那什么是Hooks?裆装,'Hooks'的單詞意思為“鉤子”。
React Hooks 的意思是倡缠,組件盡量寫成純函數(shù)哨免,如果需要外部功能和副作用,就用鉤子把外部代碼"鉤"進(jìn)來(lái)毡琉。而React Hooks 就是我們所說(shuō)的“鉤子”铁瞒。
下面是React為我們提供的默認(rèn)的四種最常用鉤子
1、useState()
2桅滋、userContext()
3慧耍、userReducer()
4、useEffect()
至于用法丐谋、我就不細(xì)說(shuō)了,你們就自行百度或者參考官方對(duì)應(yīng)的api吧.........
關(guān)于React Hooks的理解芍碧,它為我們帶來(lái)了React翻天覆地的變化,也讓我們感受到了React的未來(lái)号俐,不過(guò)泌豆,假如你不會(huì)Hooks也是沒有關(guān)系的。根據(jù)官方文檔的話來(lái)說(shuō):
1吏饿、完全可選的踪危。
你無(wú)需重寫任何已有代碼就可以在一些組件中嘗試 Hook,但是如果你不想猪落,你不必現(xiàn)在就去學(xué)習(xí)或使用 Hook贞远。
2、100% 向后兼容的笨忌。
Hook 不包含任何破壞性改動(dòng)蓝仲,Hook 已發(fā)布于 v16.8.0。
3、沒有計(jì)劃從 React 中移除 class袱结。
4亮隙、Hook 不會(huì)影響你對(duì) React 概念的理解。
Hook 為已知的 React 概念提供了更直接的 API:props垢夹, state溢吻,context,refs 以及生命周期果元。