</>
⌕
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áchNhược điểm
HOC withAuth(Comp)Wrapper lồng nhau, xung đột tên props, khó type
Render propsCallback lồng sâu (JSX hell)
Custom hookChỉ tái dùng logic, không tái dùng markup
🃏 Ôn bằng flashcard