[JS Pattern] Provider Pattern


Make data available to multiple child cpmpopnents to avoid prop drilling

Create a Context:

Hooks

We can create a hook to provide context to components. Instead of having to import useContext and the Context in each component, we can use a hook that returns the context we need.

function useThemeContext() {
    const theme = useContext(ThemeContext);
    
    if (!theme) {
      throw new Error("useThemeContext must be used within ThemProvider")
    }
    return theme;
}

Instead of wrapping the components directly with the TmemeContext.Provider component, we can create a HOC that adds returns this component with the provided values. This way, we can separate the context logic from the rendering components, which imporves the resuability of the provider.

[Note] From JS Patterns Book