基礎知識
- React是什麼?
- React是一個用於構建使用者介面的JavaScript庫。
- React和Angular、Vue有什麼區別?
- React專注於UI元件化,資料流動單向,需配合其他庫(如Redux)進行狀態管理;Angular是完整的前端框架,提供一站式解決方案;Vue則是輕量級框架,易於上手且效能優良。
- React中的元素和元件有什麼區別?
- 元素是React中最小構建塊,不可變;元件是函式或類,接收輸入並返回React元素樹。
元件
- React元件有哪些型別?
- 函式元件和類元件。
- 函式元件和類元件的區別是什麼?
- 函式元件更簡潔,沒有生命週期方法;類元件支援更多特性,如狀態管理和生命週期鉤子。
- 什麼是無狀態元件(Functional Component)?
- 無狀態元件是隻接收props並返回JSX的函式,不管理內部狀態。
- 什麼是受控元件和非受控元件?
- 受控元件的表單資料由React元件的狀態管理;非受控元件的表單資料由DOM本身管理。
生命週期
- React類元件有哪些生命週期方法?
- 掛載階段:constructor, componentWillMount, render, componentDidMount;更新階段:componentWillReceiveProps, shouldComponentUpdate, componentWillUpdate, render, componentDidUpdate;解除安裝階段:componentWillUnmount。
- React 16.3以後的生命週期方法有哪些變化?
- 引入了getDerivedStateFromProps, getSnapshotBeforeUpdate和componentDidCatch,同時部分方法(如componentWillMount, componentWillReceiveProps, componentWillUpdate)被視為不安全,被新的生命週期方法替代或建議避免使用。
狀態管理
- React中的狀態是什麼?如何管理狀態?
- 狀態是元件內部的私有資料,可以透過this.state在類元件中管理,或在函式元件中使用React Hooks(如useState)管理。
- 什麼是Redux?它如何與React結合使用?
- Redux是一個用於管理JavaScript應用的可預測狀態容器,可與React結合使用,透過Provider和connect等方法將Redux store中的狀態對映到React元件的props中。
Hooks
- 什麼是React Hooks?
- Hooks是React 16.8引入的新特性,允許你在不編寫class的情況下使用state以及其他的React特性。
- 常見的React Hooks有哪些?
- useState, useEffect, useContext, useReducer, useCallback, useMemo等。
- useState和useContext的區別是什麼?
- useState用於在函式元件中新增區域性狀態;useContext用於在元件樹之間共享值,類似於將變數值“放入”全域性作用域中,使得任何元件都可以讀取它,無需顯式地透過每一層元件傳遞props。
效能最佳化
- React中如何進行效能最佳化?
- 使用shouldComponentUpdate或React.memo進行淺比較,避免不必要的渲染;使用React.lazy和Suspense進行程式碼分割和懶載入;利用useCallback和useMemo避免不必要的計算和渲染;最佳化列表渲染,如使用虛擬化技術。
錯誤處理
- React中如何進行錯誤處理?
- 使用Error Boundaries元件來捕獲並列印JavaScript錯誤,並阻止它們冒泡至更高層。
Context
- React中的Context是什麼?
- Context提供了一種在元件之間共享值的方式,而不必顯式地透過每一層元件傳遞props。
Refs
- React中的Refs是什麼?它們如何工作?
- Refs提供了一種方式,允許我們訪問DOM節點或在render方法中建立的React元素。
高階元件(HOC)
- 什麼是高階元件?
- 高階元件是接受一個元件並返回一個新元件的函式。
路由
- React中如何實現路由?
- 可以使用React Router庫來實現路由功能,它提供了BrowserRouter、Route、Link等元件和API。
服務端渲染(SSR)
- React如何進行服務端渲染?
- 可以使用Next.js或Gatsby等框架來實現React的服務端渲染,它們提供了內建的服務端渲染支援和最佳化。