熱門考題:
- Redux 生命週期
- useEffect 使用情境
- useMemo vs. useCallback 差異與使用情境
- 自定義 Hooks 的情境
- 如何管理狀態 => useContext, useReducer
- MVVM vs. MVC 差異、優缺點與解決的問題
- 效能調校會做些什麼
- 實作 Testing 的例子
冷門考題:
- 請解釋 ReactJS 的概念,Declarative , Component-Based
熱門考題:
冷門考題:
討論的起源於 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
技術摘要:
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:
HVC type handle
mac 10.12 後才支援 hevc
edge 至今都不支援 hevc
詳細待補…
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
前情提要,先備知識:關於 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