React的受歡迎程度沒有顯示出衰落的跡象,對開發人員的需求仍然超過了世界許多城市的供應。對於經驗不足的開發人員(或那些在就業市場上暫時不在工作市場的開發人員),在面試階段證明您的知識可能令人生畏。
在本文中,我們將研究15個問題,涵蓋了一系列知識,這些知識涉及與React有效理解和合作的核心。對於每個問題,我將總結答案,並給出其他資源的鏈接,您可以在其中找到更多信息。
鑰匙要點
>本文提供了15種常見的反應訪談問題的綜合列表,涵蓋了一系列知識,這些知識涉及與React有效理解和有效合作的核心,例如虛擬DOM,JSX,類和功能性組件,狀態和狀態和道具,狀態和道具, React鉤子等等。
>
>文章強調了了解階級和功能組件之間差異的重要性,鍵在渲染集合中的作用以及狀態與道具之間的區別。
- >本文還涵蓋了更高級的主題,例如道具鑽探,反應上下文,redux,用於造型應用程序的不同方法以及受控和不受控制的組件的概念。
>本文通過突出了React Hooks的優勢,消除了對基於類的組件的需求,使重複使用邏輯更容易,並導致更可讀,可測試的代碼。
-
1。什麼是虛擬dom? -
答案-
虛擬DOM是組成您應用程序UI的實際HTML元素的內存表示。重新渲染組件時,虛擬DOM將其與DOM模型的更改進行比較,以創建要應用的更新列表。主要優點是它的效率很高,僅對實際DOM進行最小的必要更改,而不必重新渲染大塊。
進一步閱讀
了解虛擬DOM
>虛擬DOM解釋
2。什麼是JSX?
- 答案
JSX是JavaScript語法的擴展,它允許編寫看起來像HTML的代碼。它將其編譯為常規的JavaScript函數調用,提供了一種為組件創建標記的更好的方法。 - >
以此JSX:
它可以轉化為以下JavaScript:
><span><span><span><div</span> className<span>="sidebar"</span> /></span>
</span>
進一步閱讀
3。類組件和功能性的組件有什麼區別?
>
答案
在React 16.8(引入鉤子)之前,使用基於類的組件來創建維持內部狀態或使用生命週期方法所需的組件(即ComponentDidMount和shose shoreComponentUpdate)。基於類的組件是一個ES6類,該類別擴展了React的組件類,並且至少實現了Render()方法。
類組件:
>功能組件是無狀態的(再次,<span>React.createElement(
</span> <span>'div',
</span> <span>{className: 'sidebar'}
</span><span>)
</span>>
>功能組件:
><span>class Welcome extends React<span>.Component</span> {
</span> <span>render() {
</span> <span>return <h1>Hello, {this.props.name}</h1>;
</span> <span>}
</span><span>}
</span>
注意:React 16.8中的鉤子的引入意味著這些區別不再適用(請參閱問題14和15)。
進一步閱讀
>功能組件與反應中的類成分
React
的功能>
答案
在呈現React中的集合時,在每個重複的元素中添加一個鍵,對於幫助反應跟踪元素和數據之間的關聯很重要。密鑰應該是獨特的ID,理想情況下是收集項目中的UUID或其他獨特的字符串:
不使用鍵,或使用索引作為鍵,在添加和刪除集合中的項目時可能會導致奇怪的行為。
<span>function <span>Welcome</span>(props) {
</span> <span>return <h1>Hello, {props.name}</h1>;
</span><span>}
</span>
進一步閱讀
>列表和鍵
了解React的關鍵道具-
- 5。狀態和道具之間有什麼區別?
>
答案
props是從其父母傳遞到組件中的數據。它們不應突變,而應僅顯示或用於計算其他值。狀態是一個組件的內部數據,可以在組件的使用壽命中進行修改,並在重新匯款之間維護。
進一步閱讀
> props vs state
6。為什麼要調用SetState而不是直接突變狀態?
- 答案
如果您嘗試直接突變組件的狀態,則React無法知道它需要重新渲染組件。通過使用setState()方法,React可以更新組件的UI。
獎金
作為獎勵,您還可以談論不能保證如何同步的狀態更新。如果您需要基於另一個狀態(或Props)更新組件的狀態,請將函數傳遞給SetState(),該函數將狀態和道具作為其兩個參數:><span><span><span><div</span> className<span>="sidebar"</span> /></span>
</span>
進一步閱讀
7。您如何限制以道具的價值類型或使其要求?
>
答案
>為了鍵入組件的支柱,您可以使用Prop-Types軟件包(以前作為React的一部分,在15.5之前包含在React的一部分)來聲明預期的價值類型以及是否需要道具:
<span>React.createElement(
</span> <span>'div',
</span> <span>{className: 'sidebar'}
</span><span>)
</span>
進一步閱讀
8。什麼是道具鑽探,如何避免它?
>
答案
當您需要將數據從父組件傳遞到層次結構中較低的組件時,就會發生支撐鑽探,這是通過其他不需要道具本身的組件“鑽孔”的。 >
有時,可以通過對組件進行重構,避免過早將組件分解為較小的組件,並將公共狀態保留在最接近的共同父母中,從而避免使用道具鑽孔。您需要在組件樹中深/分開的組件之間共享狀態,您可以使用React的上下文API或諸如Redux(Redux)的專用狀態管理庫。
進一步閱讀
Prop鑽孔
答案
通過React提供了上下文API,以解決應用程序中多個組件之間共享狀態的問題。在引入上下文之前,唯一的選擇是引入單獨的州管理庫,例如Redux。但是,許多開發人員認為Redux引入了許多不必要的複雜性,尤其是對於較小的應用程序。
進一步閱讀
上下文(react docs)
如何用react鉤和上下文api- 替換redux
- 10。什麼是redux?
答案
Redux是在上下文API存在之前創建的第三方國家管理庫。它基於一個稱為商店的狀態容器的概念,該組件可以從AS Props接收數據。更新商店的唯一方法是將操作派遣到商店,該操作將傳遞到還原器中。還原器接收到動作和當前狀態,並返回一個新狀態,將訂閱的組件觸發重新渲染。
進一步閱讀
開始使用redux 開始
深入研究redux
-
11。對React應用程序進行樣式的最常見方法是什麼?
- 答案
>造型組件的樣式組件有多種方法,每個方法都有優點和缺點。要提到的主要內容是:
- 內聯樣式:非常適合原型製作,但具有局限性(例如,偽級的樣式)
基於類的CSS樣式:性能多於內聯風格,並且是新手React 的開發人員熟悉的
- > css-in-js樣式:有多種庫可以在組件中聲明樣式為JavaScript,更像是代碼。
- 進一步閱讀
如何樣式的反應組件
答案
>在HTML文檔中,許多形式的元素(例如
以上是15個用解決方案的訪談問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!