Керування станом · Middle · Запитання 21 з 75
Чому селектор, що повертає новий об'єкт, спричиняє зайві ререндери (або нескінченний цикл у v5)?
const { a, b } = useStore((s) => ({ a: s.a, b: s.b }));- ✓Правильна відповідь: Щоразу створюється новий об'єкт; обгорніть селектор у
useShallow - 2Zustand забороняє вибирати більше одного поля
- 3Об'єкти можна вибирати лише через
getState()
Пояснення
Zustand порівнює результати селектора через Object.is. useShallow((s) => ({ a: s.a, b: s.b })) порівнює поля поверхнево й зберігає те саме посилання, якщо вони рівні.