Study
SwiftUI

@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).

Editor Latihan

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)).