最近跟朋友聊技術,發(fā)現(xiàn)越來越多的大廠,都優(yōu)先考慮用 React 做項目,在面試中也經(jīng)常會考察對 React Hooks 的理解。
其實,我一直覺得,React 才是前端的正確打開方式。當然,并不是說不會 React 就找不到工作,而是它作為前端多年發(fā)展的智慧結晶,為前端開發(fā)提供了一種優(yōu)秀的模式,很值得研究。React 當年 2 個顛覆式的創(chuàng)新點:虛擬 DOM 機制、JSX 語法的使用;完美地解決了前端開發(fā)“模板語言不夠靈活,DOM API 又太繁瑣,且難以維護”的痛點,也因此,React 逐步成為了最為流行的前端框架之一。尤其在 2019 年 React 新發(fā)布了 Hooks 特性,讓人耳目一新。但也讓廣大早就恐懼于各種新輪子的前端人心頭一緊,到處在問:- Hooks 跟 Class 比起來有什么區(qū)別?
- 在實際開發(fā)項目中 React-Hooks 用得多嗎?
- 現(xiàn)在項目代碼都是 Class 的,難道都得改一遍嗎?
我曾經(jīng)也很遲疑要不要去接觸這個新輪子,網(wǎng)上有句話形容地很貼切:“總之這就是未來了,你不陪跑也得陪跑”。實際上,Hooks 確實是大勢所趨。它可以讓你在不編寫 Class 的情況下,使用 state 以及其他 React 的特性,并且能節(jié)省很多的邏輯復用,寫出的代碼看起來也比較“干凈”。舉個例子,React 開發(fā)的痛點之一「業(yè)務邏輯的重用」,比如,你想在組件中去監(jiān)聽窗口大小的變化,以便在布局上做調整。這時就得在類組件的不同生命周期中做事件監(jiān)聽的綁定和解綁。其中的困難和復雜可想而知,不得不借助高階組件這樣復雜而又晦澀的設計模式來解決。而這個問題,用 Hooks 就能很輕松地應對了。只需要通過 Hooks 的方式進行封裝,將其變成一個可綁定的數(shù)據(jù)源。這樣當窗口大小發(fā)生變化時,Hooks 的組件會自動重新渲染。同時,代碼也更加易懂,并且不會產(chǎn)生額外的組件節(jié)點。可以說,引入 Hooks 的概念之后,函數(shù)組件就具備了狀態(tài)管理、生命周期管理等能力,幾乎可以實現(xiàn)原來的 Class 組件具有的所有能力。捷徑?jīng)]有,心得不少。對于剛接觸 Hooks 的人來說,經(jīng)常會遇到各種問題:為什么編譯又不過了?函數(shù)組件怎么又死循環(huán)了?Redux 的 Store 要怎么訪問?作為過來人我想說,對于 React Hooks 而言,最重要的是準確地知道 Hooks 的功能邊界,它能做什么,什么時候該用,否則就會陷入誤區(qū),寫出的代碼隱藏 Bug,并且難以維護、不易排查。我的建議是,沿著「建立對 React Hooks 的全局認知 → 掌握核心概念和原理 → 結合實踐」這個路徑來學習,這其中最重要的一點,要把原理和實際業(yè)務場景結合起來,才能進行有效的實踐。這里,分享給你一個 「React Hooks 知識框架圖」,包含應用開發(fā)、測試、打包和部署;結合業(yè)務場景的實戰(zhàn);以及核心原理。幫你建立對 React Hooks 的全面認知,建議收藏。
這張圖出自王沛,在 React 這塊,他相當有發(fā)言權了。他在前端領域深耕了 15 年。研二時就出版了當時國內第一本專門講 Web 2.0 的書籍:《征服 Web 2.0: Ajax 開發(fā)技術詳解》。后來分別在 IBM 和 SAP 工作過,目前在 eBay 擔任前端框架架構師的工作。他可以說是國內最早一批的 React 實踐者,在 InfoQ 專欄、QCon 做過多次演講分享,推動了 React 在國內的普及。他還把自己對 React 的一些可重用的經(jīng)驗,做成了開源項目,在 GitHub 上有超過 5000 個 Star。不夸張的說,他經(jīng)歷了前端的整個發(fā)展歷史,也深知前端開發(fā)的各種痛點、難點,以及它們是如何被一個個出現(xiàn)的框架和工具不斷攻破的。早在 2019 年,他就在極客時間講過 React,口碑很好,一直有不少人催他開新專欄。

到最近,聽說他終于開了第二季《React Hooks 核心原理與實戰(zhàn)》,我第一時間就購買了,除了核心概念 JSX、state 和 props 等的講解,還會通過具體場景分析,帶你掌握常見的設計模式和最佳實踐,如利用 useMount 和 useDebounce 來自定義 Hooks,實現(xiàn)項目開發(fā)。當然,專欄最吸引我的,就是把原理和實際業(yè)務場景結合起來,讓你在真實的場景中透徹理解 Hooks 是如何解決問題的,并讓你在實戰(zhàn)中掌握 Hooks 的思考方式,擁有舉一反三的能力。對王沛的能力和水平,我是非常信任的。整個專欄也是循序漸進的,從概念、基本原理,到實戰(zhàn)案例,系統(tǒng)又全面,整體上分為 3 個層面:專欄系統(tǒng)講解 10 個最常用的 Hooks,教會你如何用 Hooks 的思路去思考功能的實現(xiàn)。理解了這些機制是一勞永逸的,因為無論是其它的內置 Hooks 還是自定義 Hooks,道理都是相通的。2.大量實戰(zhàn)案例,覆蓋 React 最常用的使用場景。
王沛設計了 9 個不同的典型業(yè)務場景,并基于 React Hooks 去剖析一些常見設計模式。掌握這些通用原則和最佳實踐,就能形成自己的知識庫。在遇見類似的場景時,可以靈活調取。3.了解工具、生態(tài)和未來,開拓你的技術視野
學習 Hooks,是為了更好地使用 React,所以專欄把 React 應用該如何打包,整個生態(tài)有哪些可用的工具和資源,該如何測試,以及未來會有哪些發(fā)展的趨勢等等,都講得清晰透徹。有了完整體系的積累,才能真正獨當一面,完成整個應用的開發(fā)、測試、打包和部署。無論你是專職從事前端開發(fā);還是以后端為主,也需要自己做一些 UI 界面,那么 React 作為目前最為流行的前端框架,都值得我們好好鉆研。平時我們很難接觸到大佬,但互聯(lián)網(wǎng)時代最大的就好處在于,我們可以通過專欄,跟大佬零距離交流,這真是多少錢都買不到。?