onChange(of:) реагирует на смену значения: side effects, синхронизация, аналитика; новый API передаёт old/new.
Разбор
- Не устраивайте циклы onChange↔state.
- Тяжёлую работу — в Task.
- Сравнение Equatable значений.
- Предпочитайте явную модель событий, если onChange разрастается.
Итог
onChange — точечная реакция на изменение; циклы и перегрузка — запах дизайна.