@Reducer
struct Feature {
struct State {
var count = 0
var isLoading = false
}
enum Action {
case incrementButtonTapped
case decrementButtonTapped
case loadData
case dataResponse(Result<String, Error>)
}
var body: some Reducer<State, Action> {
Reduce { state, action in
switch action {
case .incrementButtonTapped:
state.count += 1
return .none
case .decrementButtonTapped:
state.count -= 1
return .none
case .loadData:
state.isLoading = true
return .run { send in
let data = try await apiClient.fetchData()
await send(.dataResponse(.success(data)))
} catch: { error, send in
await send(.dataResponse(.failure(error)))
}
case let .dataResponse(result):
state.isLoading = false
// Handle response...
return .none
}
}
}
}