상태 변화를 일으키는 모든 동작: Action
Action 은 디바이스와 사용자 인터랙션을 받아오기 위한 타입이다.
struct CounterFeature: Reducer {
struct State: Equatable {
var count = 0
}
enum Action: Equatable {
// 숫자 증감버튼들을 탭할 때의 상황
case incrementButtonTapped
case decrementButtonTapped
}
var body: some ReducerOf<Self> { /* code */ }
}
Swift
복사
이런 직관적인 동작 뿐만 아니라, 알림 창을 닫거나 APi의 request를 받는다든지, 타이머를 작동시킨다든지 하는 복잡한 행동들도 Action 에 추가할 수 있다.
이렇게 받아온 Action 들은 사용자가 디바이스와 상호작용할 때 일종의 신호를 받아온다.
그리고 그렇게 Action 이 Reducer 의 State 를 변경하거나 외부와 통신할 수 있는 Effect 를 반환시키도록 트리거를 한다.
Action 네이밍 컨벤션
Action의 이름을 지을 때는 Reducer가 실행할 로직이 아니라, 사용자가 UI에서 수행한 작업의 이름을 그대로 따서 짓는다.
ex) incrementButtonTapped, decrementButtonTapped