Skip to content

Instantly share code, notes, and snippets.

@atimca
Created June 19, 2020 09:08
Show Gist options
  • Select an option

  • Save atimca/1565d5e1386d6d65163630d48eae58fd to your computer and use it in GitHub Desktop.

Select an option

Save atimca/1565d5e1386d6d65163630d48eae58fd to your computer and use it in GitHub Desktop.
let firstReducer: Reducer = { state, event in
var state = state
switch event {
case .newUserWasLoaded(let user):
state.user = user
default:
return state
}
return state
}
let secondReducer: Reducer = { state, event in
var state = state
switch event {
case .newsEvents:
state.newsState?.step = .loading
default:
return state
}
return state
}
let resultReducer = combine(firstReducer, secondReducer)
let initialState = AppState(user: User(id: ""), newsState: NewsState(user: User(id: ""), step: .initial))
let firstMutation = resultReducer(initialState, .newUserWasLoaded(User(id: 1)))
let secondMutation = resultReducer(firstMutation, .newsEvents(.loadData))
print(secondMutation.user.id)
print(secondMutation.newsState!.step)
// Console output:
// 1
// loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment