Skip to main content

Що означає іммутабельність у контексті NgRx?

Іммутабельність у контексті NgRx - це правило: стан не можна змінювати напряму, можна лише створювати новий на основі старого.

Що це означає на практиці:

Погано (мутуємо):

ts
state.user.name = 'Maria'; // змінюємо прямо в об'єкті return state;

Добре (іммутабельно):

ts
return { ...state, user: { ...state.user, name: 'Maria' } };

Ми не чіпаємо старий стан - створюємо нову копію зі змінами.

Навіщо це потрібно:

  1. Передбачуваність. Старий стан завжди залишається доступним. Немає "магічних" змін.
  2. DevTools і time-travel. Можна легко відкочувати стан назад і бачити, що змінилося.
  3. Оптимізація. Angular і селектори бачать, що об'єкт змінився (за посиланням), і оновлюють лише потрібні частини.

У NgRx:

  • Reducers зобов'язані бути іммутабельними - вони завжди повертають новий стан.
  • Якщо щось мутувати, можна отримати баги, які складно відстежити.

Висновок: Іммутабельність - це правило "не ламати, а створювати заново". У NgRx воно забезпечує чистоту, прозорість і стабільність.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.