You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
https://hackmd.io/YuqYjrh6SMiDY-maqGWqmg#/
QA
【DOM 是什麼?】
是瀏覽器特殊的 JavaScript 物件
包含方法,讓我們可以操作
【短時間操作 DOM,會讓畫面卡卡的是為什麼?】
如何衡量效能昂貴?
React 的效能改善
著重在畫面沒有變化的 React element
避免產生不必要的 React element
【補充】p.19
Virtual DOM 並不是絕對都比 DOM 快是在多數情況下,確保可以有水準之上如果都已經知道具體操作什麼 DOM,並且操作範圍都是最小化,那就沒必要再去跑 Virtual DOM 做新舊比較不是 A、B 比較速度的問題,而是操作 A 的時候可能會有額外的成本
比喻:寫測試要額外花力氣規劃跟寫測試,直接寫可能有時候比較快
所以真正的命題不是『寫測試比不寫測試更省時間嗎?』
而是『寫測試比不寫測試更省麻煩嗎?』
(非預期錯誤、計算成本、其他處理⋯⋯)
Virtual DOM 和實際操作 DOM 都會損耗效能。
理想狀況:精準知道 DOM 的差異 做最小改變
目前有個相對好的方案:
利用 Virtual DOM 去比較新舊 DOM,近一步更新 DOM
這樣的形式:確保大部分情況都是能讓效能在一定水準之上,避免更大或是潛在損失。
【什麼是 Virtual DOM?】
模擬 DOM 結構的資料
要更新畫面的時候,會去比較新舊,找出需要改變的部分,再去執行 DOM 操作
【Virtual DOM 只有在 React 有嗎?】
Virtual DOM 的重點
【補充】
【什麼是 React Element?】
React 基於 Virtual DOM 概念所實現的虛擬畫面結構元素
是組成畫面的最小單位
補充:延伸到使用 JSX 的說法是一種向外解釋的講法
⇒ 可以改成問自己【為什麼需要 React Element?】
【補充】通常講 Virtual DOM 有 2 種意思
Virtual DOM 的概念本身
在 React 裡面指的是 React Element
DOM 裡面的元素不是 DOM,還是存在樹狀結構裡面 ⇒ node
更廣泛的東西
PropTypes.node
PropTypes.element
【延伸閱讀】https://medium.com/starbugs/react-開發者一定要知道的底層架構-react-fiber-c3ccd3b047a1
【React 把 React Element 繪製成實際 DOM 的流程為何】
準備空的元素作為目標容器
建立 root 並指定目標容器
getElementById
createRoot
準備用來描述畫面的 React Element
已建立好的 root 來將 React Element 繪製成實際的 DOM element
【目標容器的用途?】
【root 裡面放 btn,然後透過 React 正常的流程,也放個按鈕,會發生什麼事】
只關注自己的 React Element 的比較
會砍掉原有的按鈕,重新繪製 React 的按鈕上去
Beta Was this translation helpful? Give feedback.
All reactions