foundation

Производное состояние

Вычисляйте значения из канонических данных вместо дублирования, которое может разойтись.

Производное состояние вычисляется из канонических данных при чтении (или мемоизируется, если дорого). Если значение можно посчитать, вторая копия в store почти неизбежно разойдётся при обновлении только одной стороны.

					const items = [{ id: 1, done: true }, { id: 2, done: false }];
// Производное — не храните completedCount отдельно
const completedCount = items.filter((i) => i.done).length;
				

Мемоизация (`useMemo`, reselect, MobX computed) уместна при тяжёлом вычислении и стабильных входах. Selectors — паттерн Redux; computed — MobX; идея одна, проводка разная.

На интервью: найдите дублированные фильтры, счётчики или отсортированные списки рядом с исходным массивом.

Типовые ошибки: синхронизация производных полей в reducer, цепочки useEffect, копирующие props в state, селекторы, мутирующие входы.

Компромисс: чуть больше работы при чтении против гарантированной согласованности.

Чеклист:

  • Один канонический источник на факт.
  • Вычисляйте при чтении или мемоизируйте проекции.
  • Сбрасывайте memo при смене входов.
  • Не записывайте производные значения как истину.