enum Action 정의
- ViewModel에서 enum형태로 action(event)를 정의
- ViewModel에서 알맞은 로직 수행
class ViewModel: ObservableObject {
enum Action {
case add
case delete
}
func send(_ action: Action) {
switch action {
case .add:
print("add action")
case .delete:
print("delete action")
}
}
}
action 을 파라미터로 받는 send 메서드를 정의하여 모든 action에서 일어날 로직들을 명확하게 처리해 주었다.
view에서 action 호출
struct ContentView: View {
@StateObject private var viewModel = ViewModel()
var body: some View {
VStack {
Button {
viewModel.send(.add)
} label: {
Text("add")
}
Button {
viewModel.send(.delete)
} label: {
Text("delete")
}
}
.padding()
}
}
- viewModel에서
send(action) 을 호출하여 원하는 로직 수행
직접 써본 후기!
- ViewModel의 구조를 한눈에 파악할 수 있었음
- RxSwift의 input-ouput 패턴을 사용했을 때처럼(사용 목적은 다르긴 하지만) ViewModel의 구조를 쉽게 파악할 수 있었다.