Разделение контекстов для ограничения повторных рендерингов
Разделяйте часто изменяющиеся значения и стабильные значения, помещая их в разные контексты.
«Разделение контекстов для ограничения повторных рендерингов» — бесплатный урок React Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.
Добро пожаловать
Проблема повторного рендеринга в контексте
Разделение по частоте обновлений
const ThemeCtx = createContext('light');
const UserCtx = createContext(null);
// theme changes rarely; user changes on login/logout — same frequency is fine
// but notifCount changes every second — split it out!Разделение контекстов данных и диспетчеризации
const CountCtx = createContext(0);
const SetCountCtx = createContext(() => {});
function Provider({ children }) {
const [count, setCount] = useState(0);
return (
<CountCtx.Provider value={count}>
<SetCountCtx.Provider value={setCount}>
{children}
</SetCountCtx.Provider>
</CountCtx.Provider>
);
}Мемоизация контекста диспетчеризации
const actions = useMemo(() => ({
increment: () => setCount(c => c + 1),
reset: () => setCount(0),
}), []); // stable — empty depsВложенные провайдеры
function App() {
return (
<AuthProvider>
<ThemeProvider>
<NotificationsProvider>
<Router />
</NotificationsProvider>
</ThemeProvider>
</AuthProvider>
);
}Профилирование перед разделением
Компромиссы при разделении контекстов
Сочетание с React.memo
const ExpensiveChild = React.memo(function({ label }) {
return <div>{label}</div>;
}); // won't re-render on context change if label hasn't changeduseReducer и контекст
Быстрая проверка
Итоги
Далее
Часто задаваемые вопросы
Урок «Разделение контекстов для ограничения повторных рендерингов» бесплатный?
Да — полный текст урока «Разделение контекстов для ограничения повторных рендерингов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.
Чему я научусь в уроке «Разделение контекстов для ограничения повторных рендерингов»?
Разделяйте часто изменяющиеся значения и стабильные значения, помещая их в разные контексты. Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать React Academy?
Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Разделение контекстов для ограничения повторных рендерингов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке React Academy?
Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Разделение контекстов для ограничения повторных рендерингов
- Мемоизация значений контекста с помощью useMemo
- Паттерн селектора контекста
- Когда не следует использовать контекст