SwiftUI
StateObject
삼쓰_웅쓰
2023. 1. 28. 14:01
반응형
ObservableObject를 인스턴스화 하는 프로퍼티 래퍼
SwiftUI 는 각 객체가 생성될 때 한 번만 새로운 객체를 생성하고,
ObservableObject 의 @Published 프로퍼티가 바뀔 때 관련 뷰를 업데이트 합니다.
아래와 같이 사용할 수 있습니다.
class Book: ObservableObject {
@Published var title = "Great Expectations"
}
struct BookView: View {
@StateObject var book: Book
var body: some View {
Text(book.title)
}
}
state object를 ObservedObject attribute 를 갖는 프로퍼티로 넘길 수도 있지만,
environmentObject(_:) modifier를 사용해 뷰 환경 객체로 추가할 수도 있습니다.
프로퍼티로 넘기기
class Book: ObservableObject {
@Published var title = "Great Expectations"
}
struct BookView: View {
@StateObject var book: Book
var body: some View {
BookTitle(book: book)
}
}
struct BookTitle: View {
@StateObject var book: Book
var body: some View {
Text(book.title)
}
}
environmentObject 활용해서 전달
class Book: ObservableObject {
@Published var title = "Great Expectations"
}
struct BookView: View {
@StateObject var book: Book
var body: some View {
BookTitle()
.environmentObject(book)
}
}
struct BookTitle: View {
@EnvironmentObject var book: Book
var body: some View {
Text(book.title)
}
}
반응형