Pengantar
Ketika memulai pemrograman menggunakan SwiftUI, istilah State
dan Binding
akan sering sekali diterapkan. Keduanya adalah property wrapper yang dapat membaca dan mengubah sebuah nilai. Untuk lebih jelas, akan dijelaskn pada kode di bawah ini.
Pembahasan
State
SwiftUI mengelola penyimpanan properti apa pun yang Anda nyatakan sebagai State
. Ketika nilai berubah, tampilan body
akan dimuat ulang. Penggunaan State
hanya bisa di lakukan di dalam view
itu saja.
struct ContentView: View {
@State var count: Int = 0
var body: some View {
VStack {
Text("\(count)")
.font(.title)
Button(action: {
self.count += 1
}) {
Text("Add")
}
}
}
}
Penjelasan kode:
Terdapat State count
yang didefenisikan dengan nilai 0, selain itu ada widget text yang berfungsi untuk menampilkan State count
, kemudian widget button yang berfungsi melakukan penambahan nilai pada State count
setiap kali button tersebut diklik. Jadi, dengan adanya State
pada variabel count
, tampilan akan dimuat ulang ketika terjadi perubahan nilai.
Binding
Hampir sama dengan State
, Binding dapat berbagi antar view. Pada umumnya, penggunan Binding
ketika ingin mengirim sebuah nilai dari view ke sub-view.
struct ContentView: View {
@State var count: Int = 0
var body: some View {
VStack {
Text("\(count)")
.font(.title)
AddButtonView(count: $count)
}
}
}struct AddButtonView: View {
@Binding var count: Int
var body: some View {
Button(action: {
self.count += 1
}) {
Text("Add")
}
}
}
Penjelasan kode:
Pada kode di atas terdapat 2 view, ContentView
mengirim sebuah nilai yang nantinya akan dibinding ke AddButtonView
, salah satu karakteristik Binding
adalah ditandai dengan tanda “$”.
Kesimpulan
State
dan Binding
adalah property wrapper yang mampu mengelola sebuah nilai. Ketika nilai berubah, tampilan body
akan dimuat ulang.