🍎
[SwiftUI] [TCA] Reducer内で続けてAction処理
概要
例えば以下のようなActionを定義しており、
ViewからはgetIdのみをsendした前提で、
getIdのAction後にそのままgetInfoのActionも行いたい。
switch action {
case .getId:
return environment.fact.getId
.receive(on: environment.mainQueue)
.catchToEffect(Action.getIdResponse)
case let .getIdResponse(.success(response)):
state.id = response
return .none
case .getIdResponse(.failure):
return .none
case let .getInfo(id):
// 引数idを使用したリクエスト
return .none
}
ソース
概要の内容をEffect(value:
を使用することで可能です。
switch action {
case .getId:
return environment.fact.getId
.receive(on: environment.mainQueue)
.catchToEffect(Action.getIdResponse)
case let .getIdResponse(.success(response)):
state.id = response
return Effect(value: .getInfo(response))
case .getIdResponse(.failure):
return .none
case let .getInfo(id):
// 引数idを使用したリクエスト
return .none
}
参考
Discussion