createContext(defaultValue) + Provider + useContext — передача данных вглубь без prop drilling. Подходит для темы, языка, авторизации.
Value на Provider должен быть стабильным или мемоизированным (useMemo), иначе лишние ре-рендеры потребителей.
Для часто меняющихся данных лучше Zustand/Redux; Context — для редко меняющихся глобальных настроек.
const AuthContext = createContext(null)
<AuthContext.Provider value={{ user, login }}>
<App />
</AuthContext.Provider>
const { user } = useContext(AuthContext)Книга, игра и упражнения доступны без регистрации. Видеоуроки — после оплаты курса.