Context API is a powerful feature in React that allows us to pass data and functions down the component tree without having to manually pass them through props. This can be useful for avoiding "prop drilling" and making it easier to share data between components.
Custom hooks are a powerful feature in React that allow us to extract reusable logic from usr components into a separate function. Custom hooks can be used to encapsulate complex logic, share stateful logic between components, or create reusable behaviors that can be shared across different projects.
useMemo is a hook in React that allows us to optimize the performance of usr components by memoizing expensive computations. Memoization is a technique where us store the result of a function call so that us can return the same result later without having to recompute it.
useRef is a hook in React that allows us to create a mutable reference to a value that persists between renders. useRef can be used to store a reference to a DOM element, create a mutable variable that can be accessed by other hooks, or create a memoized value that persists between renders.