$render Context
$render context is used to create and access the specific global state of a component. $render context is used to make the data of a component accessible to other components without passing them down as props.
$render context is all about using createContext() and useContext(). It is very similar to React context but with some twists.
To use createContext() or useContext(), you need to setup the $state() utility. Click $state() (opens in a new tab) to set it up.
Once you setup the $state() utility, then you can use createContext() and useContext().
When do you need $render Conext?
You need $render Context when many deeply nested children components need props from their parents and you don't want to pass down the props. Then, $render Context is important. Unlike React Context, you can make $render Context consumers independent of the context.
createContext()
It creates a specific global state for a component. The specific global state is only accessible by the component it is created for.
createContext(Component, data);createContext() takes two parameters, Component and data. In short, the data is attached to the context of the Component provided.
createContext(Player, appState);Now, the appState can be consumed through the Player component by using useContext().
useContext()
It is used to consumed data from the global context of a component.
useContext(Component);useContext() takes a component from which data will be consumed. If no context data has been created for the component provided, undefined will be returned.
//Player is a component
const appState = useContext(Player);- Make components independent of the context they consume
You can make components independent of the context they consume by making them optionally dependent on the context.
const componentState = props ? props : useContext(Player);Or
const componentState = props ?? useContext(Player);Now, we are able to get the data attached to the global context of the Player component and even make the components that consume the context independent of it.