@State 관련 질문입니다
//정상 작동 하지 않는 코드
import SwiftUI
struct MiniView: View {
@State var numb: Int
var body: some View {
Text("\(numb)")
.padding()
}
}
struct ContentView: View {
@State var number: Int = 0
var body: some View {
VStack {
Text("\(number)")
}
Button(action: {
number += 1
}, label: {
number%2 == 0 ? Text("짝") : Text("홀")
})
MiniView(numb: number)
}
}
#Preview {
ContentView()
}위의 코드는 작동하지 않습니다.
하지만 여기서
MiniView 아래 numb 변수의 @State 를 지워주면
정상 작동합니다. (아래코드)
이유가 뭘까요.. ㅜㅠ ??
//정상 작동 하는 코드
import SwiftUI
struct MiniView: View {
var numb: Int
var body: some View {
Text("\(numb)")
.padding()
}
}
struct ContentView: View {
@State var number: Int = 0
var body: some View {
VStack {
Text("\(number)")
}
Button(action: {
number += 1
}, label: {
number%2 == 0 ? Text("짝") : Text("홀")
})
MiniView(numb: number)
}
}
#Preview {
ContentView()
}
回答 3
1
아 어떤 상황인지 이해했습니다.
하위뷰의 변수와 상위뷰의 변수를 같이 변경하고 싶으면 하위 변수에 @State를 붙이면 안됩니다.
@State를 안 붙이면 하위의 전달받은 변수가 상위변수의 값과 연결되지만
만약에 @State를 붙이면 하위의 변수가 새로운 저장공간을 생성하기 때문에 연결이 끊어져버려서 그렇습니다.
또 의문이 있으시면 질문 주세요~! 강의 구매해주셔서 감사드립니다!
0
gatewaykim님 안녕하세요.
제 환경에서는 두 코드다 정상작동하는데요.

혹시 xcode를 한번 껐다 켜보시겠어요?
하위뷰에 @State가 있어도 사실 문제될게 없는거 같거든요.
수강 기간 연장 문의
0
24
1
수강연장부탁드려도될까요..
0
40
2
Combine Playground 에서 실행 시
0
54
2
70강 - 글로벌 액터로 격리된 Protocol 을 extension 에서 conform 시 타입 본체의 격리 수준 질문
0
41
1
searchable이 화면 하단에 위치해요
0
60
2
Drawing Cycle 관련 질문
0
72
1
앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?
0
94
2
델리게이트 패턴 관련 질문
0
66
2
ios 애드몹 광고
0
126
2
수강 기간 연장 부탁드릴 수 있을까요?
0
60
1
활용 앱 57강 질문입니다.
0
54
1
그래프 그리기 위한 API가 프리미엄 요금제를 구독해야만 가능하다고 합니다...ㅜㅜ
0
75
2
과거 ai없을때 듣고 다시 듣는 중인데
1
55
1
활용 앱 30강 에러 질문입니다
0
63
2
예제 빌드시 The compiler is unable to type-check this expression in reasonable time 에러 발생
0
53
1
TextField 에 Binding 으로 연결하면 에러 발생
0
52
1
xcode 26.2 에서 ReducerOf<Self> 이슈
0
76
2
20강 Task 내부에서 nonisolated async 호출 예제 질문드립니다
0
76
2
19강 Actor 의 동작 관련해 질문드립니다
0
82
2
기초앱 17강 Contraints 설정 질문입니다.
0
67
2
예제 코드가 안나와요
0
95
2
혹시 RxSwift 강의 계획도 있으신지 궁금합니다.
1
106
1
@Environment 질문 있습니다.
1
73
1
안녕하세요 @EnvironmentObject를 RequestInterceptor에서도 사용할 수 있나요?
0
370
1


