Как передавать данные вниз и события вверх: let, @Binding, замыкания, Environment, PreferenceKey?
Суть
В SwiftUI данные текут вниз по дереву, а события — вверх. Для каждого направления есть несколько инструментов, и выбор зависит от двух вопросов: кто владеет данными и сколько уровней между отправителем и получателем.
Вниз: let-свойство (только чтение), @Binding (чтение и запись чужого состояния), Environment (неявно сквозь много уровней). Вверх: замыкание (событие-намерение), тот же @Binding (запись значения) и PreferenceKey (значения от потомков, которые собирает предок).
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep