Mid #hooks#custom-hooks#hoc#render-props
Custom hook là gì? So với HOC và render props thì sao?
⚡ Trả lời nhanh
Custom hook là hàm bắt đầu bằng use, gọi các hook khác để tái sử dụng logic có state; mỗi lần gọi có state riêng. So với HOC và render props, hook không thêm tầng component (wrapper hell), dễ compose và dễ type hơn.
function useDebounce(value, ms = 300) {
const [v, setV] = useState(value);
useEffect(() => {
const id = setTimeout(() => setV(value), ms);
return () => clearTimeout(id);
}, [value, ms]);
return v;
}
Custom hook chia sẻ logic, không chia sẻ state: hai component gọi useDebounce có hai state độc lập.
| Cách | Nhược điểm |
|---|---|
HOC withAuth(Comp) | Wrapper lồng nhau, xung đột tên props, khó type |
| Render props | Callback lồng sâu (JSX hell) |
| Custom hook | Chỉ tái dùng logic, không tái dùng markup |