일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- modal 관리
- 리렌더링최적화
- @environmentobject 프로퍼티 래퍼
- @published 프로퍼티 래퍼
- 세로모드끄기
- zustand
- react modal
- zustand란
- 리액트최적화
- LazyHGrid
- LazyVGrid
- 동기 함수 내에서 비동기 함수 호출
- 블로그업로드확인
- 가로모드끄기
- navigationBar 숨기기
- react fsd
- 페이지이동함수
- react-router-dom
- BFS
- react hook
- CSS
- 반응형 css
- react상태관리라이브러리
- @observedobject 프로퍼티 래퍼
- featured-sliced-design
- C++
- 컴퓨터네트워크
- 비동기함수
- 페이지전환
- GridItem
- Today
- Total
leebaek
[SwiftUI] view life cycle | view 생명주기 본문
■ view life cycle
- onAppear
- onDisAppear
- onChange
-task
□ onAppear
: 뷰가 나타날 때 action을 수행함
-뷰가 화면에 나타날 때 초기화 작업을 수행하거나,
-사용자가 특정 뷰로 이동했을 때 무언가를 업데이트하려는 경우에 쓰임
func onAppear(perform action: (() -> Void)? = nil) -> some View
.onAppear {
// 이 뷰가 화면에 나타날 때 실행될 코드
// 예를 들어 print("MyView appeared on the screen")
}
> parameters
- action : 수행할 동작 ( *nil이면 아무 동작도 하지 않음 )
> return value
- view가 나타날 때, action을 수행한 view를 반환
□ onDisappear
: 뷰가 사라진 후에 action을 수행함
-뷰가 사용자에게 표시된 동안 수행한 작업을 정리하거나,
-뷰 컨트롤러가 사라질 때 필요한 처리를 수행하는데 쓰임
func onDisappear(perform action: (() -> Void)? = nil) -> some View
.onDisappear {
// 이 뷰가 화면에서 사라질 때 실행할 작업을 여기에 작성합니다.
// 예를 들어 데이터 저장 등
}
> parameters
- action : 수행할 동작 ( *nil이면 아무 동작도 하지 않음 )
> return value
- view가 사라질 때, action을 수행한 view를 반환
▽ onAppear, onDisappear 사용
NavigationVeiw가 화면에 나타나면, onAppear의 action이 수행되어서 콘솔에 "onAppear" 출력 ( 두번째 사진 )
NavigationVeiw가 화면이 사라지면, onDisAppear의 action이 수행되어서 콘솔에 "OnDisappear" 출력 ( 세번째 사진 )
* 사용 코드
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink() {
Text("Test")
} label: {
Text("onAppear")
}
.onAppear{ print("OnAppear") }
.onDisappear { print("OnDisappear") }
}
}
}
#Preview {
ContentView()
}
□ onChange
: 특정 값이 변경될 때, action을 수행함
func onChange<V>(
of value: V,
initial: Bool = false,
_ action: @escaping () -> Void
) -> some View where V : Equatable
.onChange(of: value) { newValue in
// 실행하려는 작업을 여기에 작성
}
> parameters
-value: 변경될 값 ( 이 값이 변경되면 action 수행됨 )
-newVlaue : 변경된 새 값
-initial: 뷰가 처음 나타날 때, action 수행할지 여부
-action: 수행할 동작
> return value
- 특정 값이 변경될 때, action을 수행한 view를 반환
▽ onChange 사용
onChange의 vlaue 값을 count로 두었기 때문에, 버튼 클릭으로 count값이 증가할 때마다 action이 수행됨
-count 값이 변경된 View 반환
-콘솔에 "Count has changed to \(newValue)" 출력
* 사용 코드
import SwiftUI
struct ContentView: View {
@State private var count = 0
var body: some View {
VStack {
Text("Count: \(count)")
Button("Increment") {
count += 1
}
}
.onChange(of: count) { newValue in
print("Count has changed to \(newValue)")
}
}
}
#Preview {
ContentView()
}
□ task
: 뷰가 나타나기 전에 비동기 작업을 수행함
-비동기작업(네트워크 호출, 파일 다운로드 등)을 처리하는데 쓰임
-콜백 함수나 대기 시간을 관리하기가 더 쉽고, 코드도 간결해지는 장점이 있음
func task(
priority: TaskPriority = .userInitiated,
_ action: @escaping () async -> Void
) -> some View
Task {
// 비동기 작업을 수행하는 코드
let result = await someAsyncFunction()
}
Task(priority: .userInitiated) {
// 우선 순위가 높은 비동기 작업
let result = await someAsyncFunction()
}
> parameters
-priority: 작업의 우선순위를 설정
-action : 수행할 동작
> return value
- view가 나타날 때, action(비동기 작업)을 수행한 view를 반환
'개발 > Swift' 카테고리의 다른 글
[Swift] 데이터 타입 | 스위프트 변수, 상수, 타입애너테이션 (1) | 2023.12.27 |
---|---|
[SwiftUI] NavigationView & NavigationLink (기본) (0) | 2023.11.23 |
[SwiftUI] ScrollViewReader & ScrollViewProxy | 스크롤뷰 리더, 프록시 (0) | 2023.11.08 |
[SwiftUI] ScrollTo (0) | 2023.11.08 |
[SwiftUI] ScrollView | 스크롤뷰 (0) | 2023.11.08 |