直接去看書(shū)吧憾股,我覺(jué)得不錯(cuò)鹿蜀,后面的摘錄暫時(shí)先不補(bǔ)了,等全部看完后再抽取一些記錄下
所謂組件荔燎,簡(jiǎn)單說(shuō)耻姥,指的是能完成某個(gè)特定功能的獨(dú)立的、可重用的代碼有咨。
React判斷一個(gè)元素是 HTML 元素還是 React組件的原則就是看第一個(gè)字母是否大寫(xiě)。(看react官方文檔也有提到蒸健,這里再記錄一下)
-
在 HTML 中直接使用 onclick 很不專(zhuān)業(yè)座享,原因如下:(這些問(wèn)題在 JSX 中都不存在)
- onclick 添加的事件處理函數(shù)是在全局環(huán)境下執(zhí)行的婉商,這污染了全局環(huán)境,很容易產(chǎn)生意料不到的后果渣叛;
- 給很多 DOM 元素添加 onclick 事件丈秩,可能會(huì)影響網(wǎng)頁(yè)的性能,畢竟淳衙,網(wǎng)頁(yè)需要的事件處理函數(shù)越多蘑秽,性能就會(huì)越低;
- 對(duì)于使用 onclick 的 DOM 元素箫攀,如果要?jiǎng)討B(tài)地從 DOM 樹(shù)中刪掉的話肠牲,需要把對(duì)應(yīng)的時(shí)間處理器注銷(xiāo),假如忘了注銷(xiāo)靴跛,就可能造成內(nèi)粗泄漏缀雳,這樣的 bug 很難被發(fā)現(xiàn)。
使用事件委托的性能當(dāng)然要比為每個(gè) onClick 都掛載一個(gè)事件處理函數(shù)要高梢睛。
React 控制了組件的生命周期肥印,在 unmount 的時(shí)候,自然能夠清除相關(guān)的所有事件處理函數(shù)绝葡,內(nèi)存泄漏也不再是一個(gè)問(wèn)題深碱。
UI = render(data)
Web前端開(kāi)發(fā)關(guān)于性能優(yōu)化有一個(gè)原則:盡量減少DOM操作。雖然DOM操作也只是一些簡(jiǎn)單的 JavaScript 語(yǔ)句藏畅,但是 DOM 操作會(huì)引起瀏覽器對(duì)網(wǎng)頁(yè)進(jìn)行重新布局敷硅,重新繪制,這就是一個(gè)比 JavaScript 語(yǔ)句執(zhí)行慢很多的過(guò)程墓赴。
React利用聲明式的語(yǔ)法竞膳,讓開(kāi)發(fā)者專(zhuān)注于描述用戶界面 “顯示成什么樣子”,而不是重復(fù)思考 “如何去顯示” 诫硕,這樣可以大大提高開(kāi)發(fā)效率坦辟,也讓代碼更加容易管理。
作為一個(gè)合格的開(kāi)發(fā)者章办,不要只滿足于編寫(xiě)出了可以運(yùn)行的代碼锉走,而要了解代碼背后的工作原理;不要只滿足于自己編寫(xiě)的程序能夠運(yùn)行藕届,還要讓自己的代碼可讀而且易于維護(hù)挪蹭。
“差勁的程序員操心代碼,優(yōu)秀的程序員操心數(shù)據(jù)結(jié)構(gòu)和它們之間的關(guān)系休偶×豪鳎” —— Linux Torvalds, Linux創(chuàng)始人
毫無(wú)疑問(wèn),如何組織數(shù)據(jù)是程序的最重要問(wèn)題。
React組件的數(shù)據(jù)分為兩種词顾,prop 和 state八秃,無(wú)論 prop 或者 state 的改變,都可能引發(fā)組件的重新渲染肉盹。prop 是組件的對(duì)外接口昔驱,state 是組件的內(nèi)部狀態(tài),對(duì)外用 prop上忍,內(nèi)部用 state骤肛。
一個(gè) React 組件通過(guò)定義自己能夠接受的 prop 就定義了自己的對(duì)外公共接口。每個(gè) React 組件都是獨(dú)立存在的模塊窍蓝,組件之外的一切都是外部世界腋颠,外部世界就是通過(guò) prop 來(lái)和組件對(duì)話的。
如果一個(gè)組件需要定義自己的構(gòu)造函數(shù)它抱,一定要記得在構(gòu)造函數(shù)的第一行通過(guò)
super
調(diào)用父類(lèi)也就是React.Component
的構(gòu)造函數(shù)秕豫。如果在構(gòu)造函數(shù)中沒(méi)有調(diào)用supper(props)
,那么組件實(shí)例被構(gòu)造之后观蓄,類(lèi)實(shí)例的所有成員函數(shù)就無(wú)法通過(guò)this.props
訪問(wèn)到父組件傳遞過(guò)來(lái)的props
值混移。很明顯,給this.props
賦值是React.Component
構(gòu)造函數(shù)的工作之一侮穿。說(shuō)是“傻瓜”悼瓮,我倒是覺(jué)得這種純函數(shù)實(shí)現(xiàn)反而體現(xiàn)了計(jì)算機(jī)編程中的大智慧亚再,大智若愚瓜挽。