Context API

Context API

What is Context API. ( A brief introduction )

What is the Context API?

The Context API in React provides a streamlined way to share data across the component tree without the need to pass props through every level. This can be especially useful in larger applications where prop drilling becomes cumbersome.

When and Why to Use the Context API

Imagine you have a toolbar component that requires a "theme" prop. In a deeply nested component structure, passing this prop through each level can be tedious and error-prone. The Context API solves this problem by allowing you to pass a value directly to the component that needs it, bypassing the intermediate components.

Context is designed to share data that can be considered "global" for a tree of React components. In simple terms, it saves you from prop drilling and makes your code cleaner and easier to maintain.

React.createContext

const MyContext = React.createContext(defaultVal);

When React renders a component that subscribes to this context object, it will read the context value from the closest matching Provider above it in the tree. The defaultVal is only used when a component does not have a matching Provider in the tree.

Note: Passing undefined as a Provider value does not cause consuming components to use the default value.

Context.Provider

<MyContext.Provider value={...}></MyContext.Provider>

The Provider component accepts a value prop, which is passed to all consuming components that are descendants of this Provider. Whenever the value prop changes, all subscribed consumers will re-render.

useContext

const useMyContext = useContext(MyContext);

The useContext hook accepts a context object and returns the current context value. It's a straightforward way to access the context in your components.

  • Accepts: A context object (e.g., MyContext)

  • Returns: The current context value for that object

Note: The argument to useContext must be the context object itself, not the Provider or Consumer.

  • useContext(MyContext) ✔️

  • useContext(MyContext.Provider)

  • useContext(MyContext.Consumer)

Thank you for reading! 🤗 For a more detailed example of using the Context API, check out my next blog where I walk through a practical implementation step by step.