Селекторы и предотвращение лишних повторных рендерингов
Извлекайте нужные части состояния через селекторы, чтобы компоненты перерисовывались только при необходимости.
«Селекторы и предотвращение лишних повторных рендерингов» — бесплатный урок React Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.
Добро пожаловать
Проблема селектора по умолчанию
// Bad: re-renders on every store change
const store = useAppStore();
return <p>{store.user.name}</p>;Использование селектора
// Good: re-renders only when user.name changes
const name = useAppStore(s => s.user.name);
return <p>{name}</p>;Проверка равенства ссылок
// Creates a new object every time — always re-renders!
const info = useStore(s => ({ id: s.id, name: s.name }));Исправление с помощью поверхностного равенства
import { shallow } from 'zustand/shallow';
const info = useAppStore(
s => ({ id: s.id, name: s.name }),
shallow // compare by content, not reference
);Выбор нескольких значений
const { items, loading } = useCartStore(
s => ({ items: s.items, loading: s.loading }),
shallow
);Стабильные ссылки на действия
// Actions are always stable — no shallow needed
const addToCart = useCartStore(s => s.addToCart);Вспомогательная функция useShallow (Zustand 5+)
import { useShallow } from 'zustand/react/shallow';
const { items, loading } = useCartStore(
useShallow(s => ({ items: s.items, loading: s.loading }))
);Объединение селекторов
const totalPrice = useCartStore(
s => s.items.reduce((sum, item) => sum + item.price, 0)
);Профилирование повторных отображений Zustand
Быстрая проверка
Итоги
Далее
Часто задаваемые вопросы
Урок «Селекторы и предотвращение лишних повторных рендерингов» бесплатный?
Да — полный текст урока «Селекторы и предотвращение лишних повторных рендерингов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.
Чему я научусь в уроке «Селекторы и предотвращение лишних повторных рендерингов»?
Извлекайте нужные части состояния через селекторы, чтобы компоненты перерисовывались только при необходимости. Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать React Academy?
Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Селекторы и предотвращение лишних повторных рендерингов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке React Academy?
Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание первого хранилища Zustand
- Селекторы и предотвращение лишних повторных рендерингов
- Сохранение состояния с промежуточным ПО persist
- DevTools Zustand и тестирование хранилищ