SwiftUI
SwiftUI ) onReceive(_:perform:)
Zedd0202
2020. 10. 23. 17:31
반응형
안녕하세요 :) Zedd입니다.
오늘은 onReceive(_:perform:)에 대해서 공부해보겠습니다!
onReceive(_:perform:)
정의 : view에서 지정된 publisher가 emit한 데이터를 감지할 때 수행할 작업을 추가.
정의는 이렇게 생겼는데,
publisher는 말 그대로 그냥 구독할 publisher고
action은 publisher가 이벤트를 생성할 때 수행할 작업이에요.
그럼 써봅시다!
그냥 onReceive의 publisher자리에는 Publisher만 들어가면 어떻게는 쓸 수 있습니다.
그냥 가장 쉬운 예제를 들고왔어요.
내가 어떤 publisher의 이벤트에 따라 뭔가를 해주고싶다면,
위처럼 publisher를 만들고 onReceive에 넣어주면 됩니다.
사실 위 코드는
Button(self.text) {
self.text = "\(Array(1...10).randomElement()!)"
}
그냥 이런식으로 해도 되지만;;;
onReceive(_:perform:)를 보여주기 위한 예제로만 봐주세요.
struct ContentView: View {
@State var currentDate = Date()
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View {
Text("\(currentDate)")
.onReceive(timer) { input in
self.currentDate = input
}
}
}
좋은 것 같아요.
반응형