React hooks are functions that allow you to use state and lifecycle features in functional components. Common hooks include `useState`, `useEffect`, `useContext`, and `useRef`.
`useContext` is a hook that allows you to consume context values in functional components. It helps avoid passing props through multiple levels of components by providing a way to share data (like themes or user settings) across the component tree.
`useEffect` is a hook that allows you to perform side effects in functional components. It can be used for fetching data, updating the DOM, and setting up subscriptions. It runs after the initial render and optionally after state updates or prop changes.
Custom hooks in React are functions that allow you to reuse stateful logic across components. They start with the word `use` and can encapsulate complex logic using existing React hooks like `useState` and `useEffect`.