千鋒教育web前端高頻面試題視頻教程,kerwin大話前端面試秘籍(附答案)

1.類組件和函數(shù)組件的區(qū)別
- 函數(shù)組件是一個函數(shù),返回一個jsx元素,而類組件是用es6語法糖class定義,繼承component這個類。
- 類組件可以通過state進行狀態(tài)管理,而在函數(shù)組件中不能使用setState(),在react16.8以后,函數(shù)組件可以通過hooks中的useState來進行模擬類組件中的狀態(tài)管理。
- 類組件中有一系列的生命周期鉤子函數(shù),在函數(shù)組件中也需要借助hooks來使用生命周期函數(shù)。
2.React中的setState缺點是什么
setSatte執(zhí)行的時候可以簡單的認為,求屬于原生js執(zhí)行的空間,那么就是屬于同步。被react處理過的空間屬于異步,這其實也是一種性能的優(yōu)化,如果多次使用setState修改值,那么在一部中會先進行合并,再進行渲染,降低了操作dom的次數(shù)。
3.React組件中props和state有什么區(qū)別
1.props是從外部傳入組件的參數(shù),一般用于父組件向子組件通信,在組件之間通信使用;state一般用于組件內(nèi)內(nèi)部的狀態(tài)維護,更新組件內(nèi)部的數(shù)據(jù),狀態(tài),更新組件的props等。
2.props不可以在組件內(nèi)部修改,只能通過父組件進行修改,state在組件內(nèi)部通過setState修改。
4.虛擬DOM的優(yōu)劣如何?實現(xiàn)原理?
- 虛擬dom是用js模擬一顆dom樹,放在瀏覽器內(nèi)存中,相當于js和真實dom中加了一個緩存,利用dom diff算法避免了沒有必要的dom操作,從而提高性能。
- 虛擬dom具有批量處理和高效diff算法,最終表現(xiàn)在DOM上的修改只是變更的部分,可以保證非常高效的渲染,優(yōu)化性能。
- 虛擬DOM不會立馬進行排版和重繪操作,對虛擬DOM進行頻繁修改,最后一次性比較并修改真實DOM中需要修改的部分。
- 虛擬DOM有效降低大面積真實DOM的重繪與排版,因為最終于真實DOM比較差異,可以只渲染局部
標簽: