Що означає іммутабельність у контексті NgRx?
Іммутабельність у контексті NgRx - це правило: стан не можна змінювати напряму, можна лише створювати новий на основі старого.
Що це означає на практиці:
Погано (мутуємо):
ts
state.user.name = 'Maria'; // змінюємо прямо в об'єкті
return state;Добре (іммутабельно):
ts
return {
...state,
user: { ...state.user, name: 'Maria' }
};Ми не чіпаємо старий стан - створюємо нову копію зі змінами.
Навіщо це потрібно:
- Передбачуваність. Старий стан завжди залишається доступним. Немає "магічних" змін.
- DevTools і time-travel. Можна легко відкочувати стан назад і бачити, що змінилося.
- Оптимізація. Angular і селектори бачать, що об'єкт змінився (за посиланням), і оновлюють лише потрібні частини.
У NgRx:
- Reducers зобов'язані бути іммутабельними - вони завжди повертають новий стан.
- Якщо щось мутувати, можна отримати баги, які складно відстежити.
Висновок: Іммутабельність - це правило "не ламати, а створювати заново". У NgRx воно забезпечує чистоту, прозорість і стабільність.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.