一、虛拟DOM
虛拟DOM是真實DOM在記憶體中的表示,ul的表示形式儲存在記憶體中,并且與實際的DOM同步,這是一個發生在渲染函數被調用和元素在螢幕上顯示的步驟,整個過程被稱為調和。
二、類元件和函數元件之間的差別
三、react中refs
refs是在render中建立DOM節點或者React元素的方法。
在典型的資料流中,props是父子元件互動的唯一方式,想要修改子元件,需用新的props重新渲染。
四、state和props差別
五、jsx
第一釋出react時,還引入了一種新的js方言jsx。
将原始HTML模闆嵌入到JS代碼中。JSX代碼本身不能被浏覽器讀取,必須使用Babel和webpack等工具将其轉換為傳統的JS。
六、為什麼不直接更新state
如果試圖直接更新state,就不會重新渲染元件
需要使用setState()方法更新state,它對state對象進行更新,當state改變時,元件通過重新渲染來響應。
七、React元件生命周期的不同階段
八、類方法綁定到類執行個體的原因
在js中,this值會根據目前上下文的變化,在React類元件方法中,開發人員使用this引用目前執行個體,是以有必要将這些方法綁定到執行個體。
九、描述Flux與MVC
MVC模式:Model→分離資料 View→UI Controller→邏輯
MVC架構常見問題:
①資料流不夠清晰:跨視圖的級聯更新會導緻混亂的事件網絡,難于調試;
②缺乏資料完整性:模型資料會發生突變,進而UI中會産生不可預測的結果。
而Flux模式的複雜使用者界面不再遭受級聯更新,任何給定React元件都能根據store提供的資料重建其狀态。
十、受控元件和非受控元件差別
十一、構造函數和getInitialState的差別
ES6和ES5本身的差別。
使用ES6類時,應該在構造函數中初始化state,并在使用React.createClass時定義getInitialState方法。
十二、避免元件的重新渲染
①React.memo( ):可防止不必要地重新渲染函數元件
②PureComponent:可防止不必要地重新渲染類元件
十二、純函數
不依賴并且不會在其作用域之外修改變量狀态的函數。本質上,純函數始終在給定相同參數的情況下傳回相同結果。
十三、區分RealDOM和VirtualDOM
十四、React特點、優點、限制
十五、浏覽器無法讀取JSX處理方法
浏覽器隻能處理JS對象,而不能讀取正常JS對象中的JSX。為了浏覽器能夠讀取JSX,先要用像Babel轉換器将JSX檔案轉換為JS對象,再傳給浏覽器。
十六、React與Angular差別
十七、如何了解“React中,一切皆元件”
元件是React應用UI的建構塊。這些元件将整個UI分成小的、獨立的、可複用的部分。每個元件彼此獨立又不影響UI的其餘部分。
十八、React中的箭頭函數如何使用
箭頭函數(=>)是用于編寫函數表達式的簡短文法。這些函數允許正确綁定元件的上下文,因為ES6預設不能使用自動綁定。使用高階函數時,箭頭函數非常有用。
十九、區分有狀态和無狀态元件
二十、React中的事件
React中的事件,是對滑鼠懸停、滑鼠單擊、按鍵等特定操作的觸發反應。處理事件類似于處理DOM元素中的事件。但有文法差異,如:①事件命名需要駝峰法;②事件作為函數。
二十一、React中key的重要性
key用于識别唯一的VirtualDOM元素及其驅動UI的相應資料。
二十二、Redux
Redux是當今最熱門的前端開發庫之一。
Redux是JavaScript程式的可預測狀态容器,用于整個應用的狀态管理。使用Redux開發的應用易于測試,可以在不同環境中運作,并顯示一緻的行為。
二十三、資料如何通過 Redux 流動
二十四、Reducer的作用
Reducers是純函數,它規定應用程式的狀态怎樣因響應ACTION而改變。Reducers通過接受先前的狀态和action來工作,後傳回新的狀态。若無需完成任務,則傳回原狀态。
二十五、React路由
React路由是建構在React之上的強大路由庫,負責維護标準化結構和行為,并用于開發單頁Web應用。
二十六、常用的hooks
二十七、react中ref的使用方式
1、直接寫一個字元串,不過隻适用于類元件;
2、createRef和useRef來定義ref變量,ref.current擷取資料;
3、使用箭頭函數,先定義一個變量,箭頭函數的形參就是目前對象。