Mid #performance#memo
Khi nào component re-render? Dùng memo, useMemo, useCallback ra sao?
⚡ Trả lời nhanh
Component re-render khi state/props đổi hoặc cha re-render. memo bỏ qua render nếu props không đổi (so sánh nông); useMemo/useCallback giữ ổn định giá trị/hàm để memo hiệu quả.
const Child = memo(({ onSave }) => <button onClick={onSave}>Save</button>);
function Parent() {
const [n, setN] = useState(0);
// Không có useCallback: hàm mới mỗi lần render -> Child vẫn re-render
const onSave = useCallback(() => save(), []);
return <><button onClick={() => setN(n + 1)}>{n}</button><Child onSave={onSave} /></>;
}