</>
⌕
Senior #reconciliation#fiber#internals

Reconciliation và Fiber trong React hoạt động thế nào?

⚡ Trả lời nhanh

Reconciliation so sánh cây element mới với cây cũ để tính phần DOM cần đổi, dựa trên 2 heuristic: khác type thì remount, cùng vị trí/key thì update. Fiber là cấu trúc dữ liệu cho phép chia render thành các đơn vị nhỏ, tạm dừng và ưu tiên được.

Hai heuristic giúp diff chạy O(n) thay vì O(n³):

  • Element khác type ở cùng vị trí: unmount cây con cũ, mount cây mới (mất state).
  • Cùng type: giữ instance, chỉ cập nhật props; với list thì dùng key để khớp phần tử.

Fiber là một node trong cây làm việc (linked list với child, sibling, return) đại diện cho một component. React giữ hai cây: current (đang hiển thị) và workInProgress (đang tính), rồi hoán đổi khi commit.

PhaĐặc điểm
RenderGọi component, diff, tính effect. Thuần, có thể bị ngắt/bỏ/chạy lại
CommitCập nhật DOM, chạy layout effect. Đồng bộ, không ngắt được
function App({ admin }) {
  // Đổi admin: type đổi -> toàn bộ cây Form bị remount, mất state
  return admin ? <AdminForm /> : <UserForm />;
}
🃏 Ôn bằng flashcard