# 為了與 React 相遇,我已在佛前求了五百年 ###### tags:`面試` ## 為什麼要選擇 React,而不是 Vue、Angular 或其他框架? <details><summary>❓</summary> * 和寫原生 js 的差別 * 資料&畫面是單、雙向綁定 * React 的思考模式 </details> ## 請列出 React 內建的所有 hook,並大概講解功能是什麼? <details><summary>❓</summary> * `useState` * lazy init * 如果有更複雜計算可以怎麼設初始值 * `useEffect` * 適用時機 * dependencies * clean function * useEffect vs useLayoutEffect * `useLayoutEffect` * 觸發的時機點 * `useEffect` * 適用時機 * dependencies * clean function * `useContext` * 為了解決什麼問題而誕生的 hooks * `useCallback` * 快取 * 防止不必要的 render 發生 * memo(components) * useMemo * `useMemo` * (state) * `useCallback` * (function) * `useRef` * uncontrolled * uncontrolled 跟 controlled component 差在哪邊 * 未提及的內建 hooks(不熟悉、不好聯想、選擇性不提) * `useReducer` * `useDebugValue` </details> ## 為什麼我們需要 Redux? <details><summary>❓</summary> * component 太多 * 追蹤 action * redux dev tool </details>details> ## Redux 是什麼?可以簡介一下 Redux 的各個元件跟資料流嗎? <details><summary>❓</summary> * 狀態管理工具 * 方便管理 state * 三大元件 * `action` * 事件類別 type * 額外資料 payload * `reducer` * reducer = (action) => new state * `store` * 儲存整個 state tree </details>details> ## 該怎麼把 React 跟 Redux 串起來? <details><summary>❓</summary> * react-redux * connect API(不熟悉沒關係,點到就好,但要有個大概印象) * HOC * hooks API * useDispatch * useSelector </details>details> ## Redux middleware 是什麼? <details><summary>❓</summary> * 跟原本的 redux 差在哪 * 資料轉換 * action 不再只是 js 的物件 * Redux thunk </details>details> ## 請列出 class component 的所有 lifecycle <details><summary>❓</summary> 及格:點出 component 在 Mounting、Updating、Unmounting 個階段做的事 滿分:Mounting、Updating、Unmounting 各階段 執行了那些 method * Mounting * constructor * render * componentDidMount * Updating * shouldComponentUpdate * render * componentDidUpdate * Unmounting * componentWillUnmount </details>details> ## 若遇見 React 上機考 <details><summary>❓</summary> 那就請各位施主自求多福啦,阿彌陀佛~ </details>details>