Проверяет понимание способов централизованного хранения глобального состояния в React и умение выбирать подходящий инструмент для больших приложений.
Когда одни и те же данные нужны в десятках компонентов на разных уровнях дерева, передавать их через props становится неудобно и приводит к «prop drilling». Решение — вынести состояние в глобальное хранилище, доступное из любой точки приложения.
import { create } from 'zustand';
const useStore = create((set) => ({
users: [],
addUser: (u) => set((s) => ({ users: [...s.users, u] })),
clear: () => set({ users: [] }),
}));
function UserList() {
const users = useStore((s) => s.users); // подписка только на users
return <ul>{users.map((u) => <li key={u.id}>{u.name}</li>)}</ul>;
}Главная проблема больших хранилищ — лишние ререндеры. Решается селекторами, мемоизацией (useMemo, reselect) и разделением стора на слайсы. Context перерисовывает всех потребителей при любом изменении значения, поэтому для часто меняющихся данных он неэффективен.
Крупные наборы данных удобно нормализовать: хранить сущности по id и ссылаться на них, а не дублировать. Это ускоряет обновления и упрощает кэширование (например, через React Query для серверных данных).
Итог: для серверного кэша используйте React Query/SWR, для UI-состояния — Zustand или Redux, а Context оставьте для статичных глобальных значений.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию