.onAppear

BS_Lee·2025년 7월 20일

swift

목록 보기
19/21

.onAppear 정리

SwiftUI로 앱을 만들다 보면 뷰가 화면에 나타나는 시점에 특정 작업을 실행해야 할 때가 있다.
이럴 때 사용하는 게 바로 .onAppear이다.


1. .onAppear란?

먼저 정의부터 짚고 가보자.

.onAppearSwiftUI에서 뷰가 화면에 나타날 때(렌더링될 때) 실행되는 클로저를 지정하는 뷰 수명주기(Lifecycle) 이벤트이다.

  • 화면에 그려지는 순간 딱 한 번 실행된다.
  • UIKit의 viewDidAppear와 유사한 역할을 한다.
  • 뷰가 사라졌다가 다시 나타나면 다시 실행된다.

그럼 하나 의문이 생긴다.
"UI가 다시 그려질 때도 실행될까?"
답은 No다. 단순히 데이터가 바뀌어 UI가 다시 렌더링될 때는 실행되지 않는다.


2. 특징

언제 실행되나?

  • SwiftUI가 뷰를 실제로 렌더링해서 사용자에게 보이는 순간
  • 예: NavigationLink로 새로운 화면을 열 때 새 화면의 onAppear가 호출됨

언제 다시 실행되나?

  • 뷰가 완전히 사라졌다가 다시 나타날 때
    (예: 다른 화면으로 갔다가 다시 돌아오면 실행)

반대 개념 – .onDisappear

  • 뷰가 화면에서 사라질 때 실행된다.
  • 주로 정리 작업(타이머 중지, 상태 초기화) 등에 사용된다.

3. 문법

.onAppear {
    // 뷰가 나타날 때 실행할 코드
}

.onDisappear {
    // 뷰가 사라질 때 실행할 코드
}

4. 예시

기본 사용 예시

struct OnAppearExample: View {
    @State private var message = "로딩 중..."
    
    var body: some View {
        Text(message)
            .onAppear {
                print("뷰가 화면에 나타났습니다!")
                message = "화면에 나타났습니다."
            }
            .onDisappear {
                print("뷰가 사라졌습니다!")
            }
    }
}

실행 흐름

  1. 화면에 나타나는 순간 → "뷰가 화면에 나타났습니다!" 출력 + message 변경
  2. 화면에서 벗어날 때 → "뷰가 사라졌습니다!" 출력

API 데이터 불러올 때 자주 사용

struct UserProfileView: View {
    @State private var username = "불러오는 중..."
    
    var body: some View {
        Text(username)
            .onAppear {
                loadUserData()
            }
    }
    
    func loadUserData() {
        // 실제 앱에서는 네트워크 요청 사용
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
            username = "홍길동"
        }
    }
}

뷰가 로드되자마자 자동으로 네트워크 요청이나 초기 데이터 세팅을 할 때 많이 사용된다.


5. 한 줄 정리

메서드언제 실행?주요 용도
.onAppear뷰가 화면에 나타날 때초기 데이터 로딩, 애니메이션 시작
.onDisappear뷰가 화면에서 사라질 때타이머 정리, 상태 초기화

한 줄 요약:
.onAppear는 뷰가 보이는 순간 작업을 시작하고, .onDisappear사라질 때 정리하는 데 쓰인다.

0개의 댓글