.onAppear 정리SwiftUI로 앱을 만들다 보면 뷰가 화면에 나타나는 시점에 특정 작업을 실행해야 할 때가 있다.
이럴 때 사용하는 게 바로 .onAppear이다.
.onAppear란?먼저 정의부터 짚고 가보자.
.onAppear는 SwiftUI에서 뷰가 화면에 나타날 때(렌더링될 때) 실행되는 클로저를 지정하는 뷰 수명주기(Lifecycle) 이벤트이다.
viewDidAppear와 유사한 역할을 한다.그럼 하나 의문이 생긴다.
"UI가 다시 그려질 때도 실행될까?"
답은 No다. 단순히 데이터가 바뀌어 UI가 다시 렌더링될 때는 실행되지 않는다.
언제 실행되나?
NavigationLink로 새로운 화면을 열 때 새 화면의 onAppear가 호출됨언제 다시 실행되나?
반대 개념 – .onDisappear
.onAppear {
// 뷰가 나타날 때 실행할 코드
}
.onDisappear {
// 뷰가 사라질 때 실행할 코드
}
struct OnAppearExample: View {
@State private var message = "로딩 중..."
var body: some View {
Text(message)
.onAppear {
print("뷰가 화면에 나타났습니다!")
message = "화면에 나타났습니다."
}
.onDisappear {
print("뷰가 사라졌습니다!")
}
}
}
"뷰가 화면에 나타났습니다!" 출력 + message 변경"뷰가 사라졌습니다!" 출력struct UserProfileView: View {
@State private var username = "불러오는 중..."
var body: some View {
Text(username)
.onAppear {
loadUserData()
}
}
func loadUserData() {
// 실제 앱에서는 네트워크 요청 사용
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
username = "홍길동"
}
}
}
뷰가 로드되자마자 자동으로 네트워크 요청이나 초기 데이터 세팅을 할 때 많이 사용된다.
| 메서드 | 언제 실행? | 주요 용도 |
|---|---|---|
.onAppear | 뷰가 화면에 나타날 때 | 초기 데이터 로딩, 애니메이션 시작 |
.onDisappear | 뷰가 화면에서 사라질 때 | 타이머 정리, 상태 초기화 |
한 줄 요약:
.onAppear는 뷰가 보이는 순간 작업을 시작하고, .onDisappear는 사라질 때 정리하는 데 쓰인다.