A. A way to create reusable logic in functional components
B. A replacement for class components in React
C. A mechanism to manage state and lifecycle in functional components
D. All of the above