Best practices for using Context
In this section, we will learn three patterns to deal with Contexts for a global state, as follows:
- Creating custom hooks and provider components
- A factory pattern with a custom hook
- Avoiding provider nesting with
reduceRight
Let's take a look at each one.
Creating custom hooks and provider components
In the previous examples in this chapter, we directly used useContext
to get Context values. Now, we will explicitly create custom hooks to access Context values as well as provider components. This allows us to hide Contexts and restrict their usage.
The following example creates custom hooks and provider components. We make a default Context value null
and check if the value is null
in the custom hooks. This checks if the custom hooks are used under the providers.
The first thing we do, as always, is to create a Context; this time, the default value of the Context is null
, which indicates that the default value...