@State (@State)
می خواهیم @State را بفهمیم. @State یعنی «حالت محلی» یک ویو. هر وقت مقدارش عوض شود، رابط کاربری هم تازه می شود. مثل نمره آزمون که روی تابلوی کلاس می زنیم و بلافاصله همه می بینند.
تعریف @State
@State یک Property Wrapper است؛ یعنی بسته بندی ساده برای نگه داری مقدار. این مقدار فقط مال همان ویو است. با تغییرش، SwiftUI دوباره ویو را می سازد. مثل چراغی که با هر فشار دکمه، روشنایی اش آپدیت می شود.
مثال شمارنده با @State
در این مثال، یک شمارنده داریم. هر بار دکمه را می زنیم، عدد زیاد می شود. چون count با @State تعریف شده، متن هم فوراً به روز می شود.
import SwiftUI
struct CounterView: View {
@State private var count = 0
var body: some View {
VStack(spacing: 12) {
Text("Count: \(count)")
Button("Increment") {
count += 1
}
}
.padding()
}
}
struct ContentView: View {
var body: some View {
CounterView()
}
}
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
نکته: از @State فقط وقتی استفاده کن که داده، فقط متعلق به همان ویو است.
گام های عملی سریع
- یک فیلد با @State در ویو بساز.
- از مقدار آن در Text یا View استفاده کن.
- با Button مقدار را تغییر بده.
- تغییر را بلافاصله روی صفحه ببین.
اشتباه های رایج و نکات
- @State را به فرزند مستقیماً نده؛ از Binding استفاده کن.
- برای داده اشتراکی، سراغ ObservableObject برو.
- مقادیر پیچیده را زیاد جابه جا نکن؛ ساده نگه دار.
ارتباط با بخش های دیگر
برای ادامه مسیر: جریان داده SwiftUI را بخوان. همچنین Binding در SwiftUI را ببین. برای ناوبری و دکمه ها، سر بزن به نوار ابزار و آیتم ها.
جمع بندی سریع
- @State یعنی حالت محلی ویو.
- تغییر @State، UI را تازه می کند.
- برای فرزند، از Binding استفاده کن.
- برای اشتراک سراسری، ObservableObject بهتر است.