@State?
- PropertyWrapper๋ก, SwiftUI์์ ๋ณํ๋ ๋ณ์์ ์ํ์ ๋ฐ๋ผ ๊ฐ์ ์ฝ์ด์ฃผ๊ฑฐ๋ ๋ฐ๊ฟ์ฃผ๋ ์ญํ (๊ฐ ์์ฒด X, ์๋จ O)์ ํ๋ค.
- ํด๋น ์์ฑ์ ์ฌ์ฉํ ๋ ๋ณ์ ์์ @State ๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉํ๋ค.
- ์ํ๋ฅผ ๋ณ๊ฒฝ ํ ๋๋ง๋ค body์์ฑ์ด ์ฌ์ค์ ๋๊ธฐ ๋๋ฌธ์, ํด๋น state ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ทฐ๋ ๋ณํ๋ฅผ ๊ฐ์งํ ๋๋ง๋ค ์๋์ผ๋ก ๋ทฐ๋ฅผ ์๋ก ๋ ๋๋งํ๋ค.
- ์ฌ์ฉ์ ์ก์
์ ๋ฐ๋ผ UI๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋ ๋ฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- @State๋ ์ ์ธํ ๋ทฐ ์ธ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ (๋ณ๊ฒฝํ๋ ค๋ฉด $๋ฅผ ๋ถ์ธ ๋ฐ์ธ๋ฉ์ ์ด์ฉํด์ผํ๋ค), ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ @State ๋ณ์๋ฅผ ํ์ฉํ๋ ค๋ฉด ๊ฐ์ฅ ์์ ๋ทฐ์์ ์์ฑํ๋ฉฐ private ์ ๊ทผ ์ ์ด์๋ฅผ ๋ถ์ฌ์ผํ๋ค. ---> ์ ๊ทผ ์ ์ด์๋ฅผ ๋ถ์ด๋ ์ด์ ๋ ์ด๊ธฐํ ๋จ๊ณ์์ ์ค์ ํ๋ ๊ฑธ ๋ฐฉ์งํ๊ธฐ ์ํด์!
์์ ์ฝ๋
struct ContentView: View {
@State private var number = 0
var body: some View {
VStack {
Text("\(number)")
Button(action: {
number += 1
}) {
Text("์ซ์ ๋ฐ๊พธ๊ธฐ")
}
}
}
}
1. ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ
์คํธ๋ก ์ ํ ์ซ์๊ฐ 1์ฉ ์ฆ๊ฐํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
2. ๋ณํ๋ ๊ฐ์ number์ด๊ธฐ ๋๋ฌธ์ number๋ฅผ @State ๋ณ์๋ก ์ ์ธํ๋ค.
--> ๋ฐ๋ผ์, "์ซ์ ๋ฐ๊พธ๊ธฐ"๋ผ๋ ๋ฒํผ์ ํญํ๋ฉด ๋ทฐ์ ์๋ ํ
์คํธ๋ 1์ฉ ์ฆ๊ฐํ๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
SwiftUI๋ก ๋ทฐ๋ฅผ ๊ทธ๋ฆด ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์์ฑ์ด์ง๋ง ์ ์์ ์ฝ๋์ฒ๋ผ ๋ฒํผ์ ๋๋ฌ์ ๊ฐ์ด ๋ณํ ๋๋ง๋ค ๋ฐ์๋๋ UI๋ ๋งค๋ฒ ์๋กญ๊ฒ ๊ทธ๋ ค์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ์ ์ฒด ๋ทฐ๋ฅผ ๋ค์ ๊ทธ๋ฆฌ์ง ์์๋ ๋ ๋ @State ๋์ @Binding์ ํ์ฉํ๊ฑฐ๋ ๋ค๋ฅธ ๋ก์ง์ ๊ณ ๋ฏผํด๋ด์ผํ ๊ฒ ๊ฐ๋ค.
References
https://developer.apple.com/documentation/swiftui/state
https://velog.io/@suhwj/SWIFTUI-STATE
'๐ Dev > SwiftUI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI] Property Wrapper ์ด์ ๋ฆฌ (0) | 2024.07.26 |
---|---|
[SwiftUI] Frame (0) | 2024.07.22 |
[SwiftUI] NavigationView, NavigationStack, navigationTitle (2) | 2024.04.15 |
[SwiftUI] Info.plist (0) | 2023.11.20 |
[SwiftUI] VStack vs LazyVStack (5) | 2023.11.06 |