</>
⌕
Junior #class-component#hooks#lifecycle

Class component và function component khác nhau thế nào? Lifecycle tương ứng với hooks ra sao?

⚡ Trả lời nhanh

Function component dùng hooks, ngắn gọn và dễ tái sử dụng logic; class dùng `this` và lifecycle method. `componentDidMount/DidUpdate/WillUnmount` đều quy về `useEffect` (cleanup tương ứng unmount). Class vẫn cần cho Error Boundary.

ClassFunction + hooks
this.state, setStateuseState, useReducer
componentDidMountuseEffect(fn, [])
componentDidUpdateuseEffect(fn, [dep])
componentWillUnmounthàm cleanup trả về từ useEffect
shouldComponentUpdateReact.memo
useEffect(() => {
  const id = setInterval(tick, 1000);
  return () => clearInterval(id); // unmount hoặc trước effect kế tiếp
}, []);

Khác biệt tư duy: effect là “đồng bộ với dữ liệu” (theo dependency) chứ không phải “chạy ở thời điểm vòng đời”. Function component cũng “bắt” giá trị props/state của từng lần render, còn this.props trong class luôn là giá trị mới nhất.

🃏 Ôn bằng flashcard