@Binding: Meneruskan State ke Child View
Penjelasan
@State cocok untuk state yang dimiliki dan dikelola satu View. Tapi bagaimana kalau child View perlu mengubah state milik parent-nya? Di sinilah @Binding dipakai: child View mendeklarasikan property dengan @Binding (bukan @State), lalu parent meneruskan projected value ($stateMilikParent) saat memanggil child tersebut. Dengan @Binding, child View TIDAK memiliki data itu sendiri — ia hanya punya "jalur" baca-tulis ke sumber kebenaran yang tetap berada di parent. Perubahan yang dilakukan child langsung terpantul ke parent dan sebaliknya. Pola ini penting untuk memecah tampilan besar jadi komponen kecil yang reusable tanpa kehilangan sinkronisasi data.
Contoh Konsep
import SwiftUI
struct ToggleBaris: View {
let label: String
@Binding var nilai: Bool
var body: some View {
Toggle(label, isOn: $nilai)
}
}
struct PengaturanView: View {
@State private var wifiAktif = true
var body: some View {
ToggleBaris(label: "Wi-Fi", nilai: $wifiAktif)
}
}
Praktikum
Buat struct SliderBaris yang punya @Binding var angka: Double dan body berupa Slider(value: ...). Lalu di ParentView, buat @State private var volume: Double = 0.5 dan panggil SliderBaris(angka: $volume).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Kalau butuh preview untuk View yang punya @Binding, kamu tidak bisa langsung memberi nilai literal — pakai .constant(nilai) sebagai binding sementara, misalnya ToggleBaris(label: "Contoh", nilai: .constant(true)).