1 · React Hooks Essentials
useState
Local state. Functional update setX(prev => prev+1) khi depend giá trị cũ.
useEffect
Side effect sau render. Cleanup return function. Empty deps = mount-only.
useMemo
Cache giá trị tính nặng. KHÔNG dùng default — chỉ khi profiler thấy slow.
useCallback
Cache function ref. Chỉ cần khi pass xuống React.memo child.
useRef
Mutable value KHÔNG re-render. DOM ref, timer id, prev value.
Custom hook
Tên use*. Encapsulate logic + state. Reusable.
// Custom hook
function useDebounce<T>(value: T, delay = 300): T {
const [debounced, setDebounced] = useState(value);
useEffect(() => {
const timer = setTimeout(() => setDebounced(value), delay);
return () => clearTimeout(timer); // cleanup
}, [value, delay]);
return debounced;
}
Pitfall: useEffect deps thiếu → stale closure. Object/array literal trong deps → effect mỗi render. Cleanup quên → memory leak. useMemo mọi nơi → tăng RAM.