首頁  >  文章  >  web前端  >  (收藏)react常用面試題的介紹

(收藏)react常用面試題的介紹

不言
不言轉載
2018-10-22 17:35:021810瀏覽

這篇文章帶給大家的內容是關於(收藏)react常用面試題的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

下面是一個常用的關於React 的面試問題清單:

無論身為一個面試者,或是招募官,下面這些問題都可以去參考

務必收藏

React 的工作原理

React 會建立一個虛擬DOM(virtual DOM)。當一個元件中的狀態改變時,React 首先會透過 "diffing" 演算法來標記虛擬 DOM 中的改變,第二步是調節(reconciliation),會用 diff 的結果來更新 DOM。

使用React 有何優點

只需查看render 函數就會很容易知道一個元件是如何被渲染的

JSX 的引入,使得元件的程式碼更可讀,也更容易看懂元件的佈局,或者元件之間是如何互相引用的

支援服務端渲染,這可以改進SEO 和效能

易於測試

React 只專注於View 層,所以可以和其它任何框架(如Backbone.js, Angular.js)一起使用

展示元件(Presentational component)和容器元件(Container component)之間有何不同

展示元件關心元件看起來是什麼。展示專門透過 props 接受資料和回調,幾乎不會有自身的狀態,但當展示元件擁有自身的狀態時,通常也只關心 UI 狀態而不是資料的狀態。

容器元件則更關心元件是如何運作的。容器元件會為展示元件或其它容器元件提供資料和行為(behavior),它們會呼叫 Flux actions,並將其作為回調提供給展示元件。容器元件經常是有狀態的,因為它們是(其它元件的)資料來源。

類別元件(Class component)和函式元件(Functional component)之間有何不同

類別元件不僅允許你使用更多額外的功能,例如元件本身的狀態和生命週期鉤子,也能讓元件直接存取store 並維持狀態

當元件僅是接收props,並將元件本身渲染到頁面時,元件就是一個'無狀態元件(stateless component) ',可以使用一個純函數來創建這樣的元件。這種元件也被稱為啞組件(dumb components)或展示元件

(元件的)狀態(state)和屬性(props)之間有何不同

State是一種資料結構,用於組件掛載時所需資料的預設值。 State 可能會隨著時間的推移而發生突變,但多數時候是作為使用者事件行為的結果。

Props(properties 的簡寫)則是元件的配置。 props 由父元件傳遞給子元件,並且就子元件而言,props 是不可變的(immutable)。元件不能改變自身的 props,但是可以把其子元件的 props 放在一起(統一管理)。 Props 也不僅僅是資料--回呼函數也可以透過 props 傳遞。

指出(元件)生命週期方法的不同

componentWillMount -- 多用於根元件中的應用程式配置

componentDidMount -- 在這可以完成所有沒有DOM 就不能做的所有配置,並開始獲取所有你需要的資料;如果需要設定事件監聽,也可以在這完成

componentWillReceiveProps -- 這個週期函數作用於特定的prop 改變導致的state轉換

shouldComponentUpdate -- 如果你擔心元件過度渲染,shouldComponentUpdate 是一個改善效能的地方,因為如果元件接收了新的prop, 它可以阻止(元件)重新渲染。 shouldComponentUpdate 應該傳回一個布林值來決定元件是否要重新渲染

componentWillUpdate -- 很少使用。它可以用來代替元件的componentWillReceiveProps 和shouldComponentUpdate(但不能存取之前的props)

componentDidUpdate -- 常用於更新DOM,回應prop 或state 的改變

componentWillUnmount -- 在這你可以取消網路請求,或移除所有與元件相關的事件監聽器

#

應該在 React 元件的何處發起 Ajax 請求

在 React 元件中,應該在 componentDidMount 中發起網路請求。這個方法會在元件第一次「掛載」(被加到 DOM)時執行,在元件的生命週期中只會執行一次。更重要的是,你不能保證在元件掛載之前 Ajax 請求已經完成,如果是這樣,也意味著你將嘗試在一個未掛載的元件上呼叫 setState,這將無法運作。在 componentDidMount 中發起網路請求將保證這有一個元件可以更新了。

何為受控元件(controlled component)

在HTML 中,類似,