中階前端面試考題整理- ReactJs

熱門考題:

  1. Redux 生命週期
  2. useEffect 使用情境
  3. useMemo vs. useCallback 差異與使用情境
  4. 自定義 Hooks 的情境
  5. 如何管理狀態 => useContext, useReducer

  1. MVVM vs. MVC 差異、優缺點與解決的問題
  2. 效能調校會做些什麼
  3. 實作 Testing 的例子

冷門考題:

  1. 請解釋 ReactJS 的概念,Declarative , Component-Based

[React 研究會] useMemo vs. useCallback

討論的起源於 document 中的一句話

useCallback(fn, deps) is equivalent to useMemo(() => fn, deps).
Reference from ReactDoc

細部探討 useCallback 與 useMemo 的關聯性,
結論是
useCallback : cached function,
useMemo : cached return value

然後以下是實驗~

#實務使用時機待補

延伸閱讀:Before-you-memo

[React] 來用 canvas 截圖影片吧!

技術摘要:

video-react load video
use canvas to capture
canvas.getContext(‘2d’)
drawImage

issue:

chrome v.76 bug 第一張截圖全黑
https://support.google.com/chrome/thread/12663566?hl=en

canvas dom

https://stackoverflow.com/questions/9152224/add-canvas-to-a-page-with-javascript


feature:

  1. 偵測寬高,做旋轉
  2. Hevc video support:

HVC type handle

mac 10.12 後才支援 hevc

edge 至今都不支援 hevc

詳細待補…

[React] React component re-render 觸發點

Component 中任一 state 、 props 狀態更新,即會整個 component 重新 render ,但 React 底層做法,會根據 dom 去比對實際需要更新哪些 dom ,詳細請見 React Document 關於 一致性比較 ( Reconciliation )

Reference : https://lucybain.com/blog/2017/react-js-when-to-rerender/

關於 Render 的測試

任一 state 變動,會觸發整個 component re-render ,但比對後無需變動的 state 則會維持現有值, ref 則完全存在於 render’s life cycle,不論 re-render 幾次,值都會持續存在;除非整個 component 重新 mount

[React 研究會]Ref 傳到子層還是 Ref嗎?

前情提要,先備知識:關於 Assignment(賦值) 這檔事
https://medium.com/%E4%B8%80%E5%80%8B%E5%B0%8F%E5%B0%8F%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%9A%84%E9%9A%A8%E6%89%8B%E7%AD%86%E8%A8%98/%E9%97%9C%E6%96%BC-assignment-%E8%B3%A6%E5%80%BC-%E9%80%99%E6%AA%94%E4%BA%8B-5f987e5700a0

如題,Ref傳到子層還保有Ref的特性嗎?

是!!!!!!!

因此可以透過這個特性,傳遞到子層,不論是子層或父層更新,兩邊都會同步更新,基本上是同一個Ref

並且不論子層或父層整個重新 render ,依舊會根據 Ref 特性而存在

以下為測試 code

需要注意的是,轉傳 refs 到 子層的DOM 组件,component 需要掛載 React.forwardRef ,在子層才能使用
詳細可參考官方文件說明 FowardRef