Зачем дочерним представлениям нужен @Binding
Разберитесь в двусторонней передаче данных между представлениями.
«Зачем дочерним представлениям нужен @Binding» — бесплатный урок SwiftUI Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SwiftUI Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SwiftUI Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Two Views, One Truth
When a parent owns a value and a child needs to change it, they must share one source of truth. Otherwise they drift apart. 🔗
The Problem with Copies
If you just pass a value into a child, the child gets a copy. Editing that copy never touches the parents original data.
Enter @Binding
A @Binding is a two-way connection. The child reads and writes the parents value directly, with no copy in between.
Reference, Not a Copy
Think of a binding as a remote control. The child does not own the data; it just holds a reference to where it lives.
Who Owns What
The parent owns the state with @State. The child only borrows it through @Binding. Ownership stays in one clear place.
Two-Way Data Flow
With a binding, changes flow both ways. The parent updates the child, and the child can update the parent. Everything stays in sync.
A Binding in a Child
A child view declares a binding for the value it needs to mutate, marked with the @Binding property wrapper.
struct ChildView: View {
@Binding var isOn: Bool
var body: some View {
Toggle("Lights", isOn: $isOn)
}
}SwiftUI Built on Bindings
You have used bindings already. Toggle, TextField, and Slider all take a binding so they can write back the value you change.
Why It Matters
Bindings let you split a big screen into small, focused child views without losing shared state. This keeps your code reusable. ✨
No Duplicate State
Never copy the same value into both parent and child as separate @State. That creates two truths that quietly disagree.
Single Source, Many Views
One value, many views editing it safely: that is the promise of @Binding. The next lessons show how to wire it up.
Quick Check
Quick check on shared state.
Recap: Sharing One Truth
A parent owns state; a child borrows it with @Binding for safe two-way edits. One source of truth keeps every view in sync. 🎉
Часто задаваемые вопросы
Урок «Зачем дочерним представлениям нужен @Binding» бесплатный?
Да — полный текст урока «Зачем дочерним представлениям нужен @Binding» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SwiftUI Academy, подпишись на CoddyKit PRO. Курс SwiftUI Academy содержит 4 уроков всего.
Чему я научусь в уроке «Зачем дочерним представлениям нужен @Binding»?
Разберитесь в двусторонней передаче данных между представлениями. Ты практикуешь SwiftUI Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать SwiftUI Academy?
Предыдущий опыт не требуется. SwiftUI Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Зачем дочерним представлениям нужен @Binding»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке SwiftUI Academy?
Да. Каждый урок SwiftUI Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Зачем дочерним представлениям нужен @Binding
- Передача Binding вниз
- Создание переиспользуемой строки с переключателем
- @State и @Binding