@Reducer
struct AppFeature {
@ObservableState
enum State {
case home
case detail(Detail.State)
case settings(Settings.State)
}
enum Action {
case home(Home.Action)
case detail(Detail.Action)
case settings(Settings.Action)
}
var body: some Reducer<State, Action> {
Reduce { state, action in
// Handle actions
}
.ifCaseLet(/State.detail, action: /Action.detail) {
Detail()
}
.ifCaseLet(/State.settings, action: /Action.settings) {
Settings()
}
}
}
struct AppView: View {
let store: StoreOf<AppFeature>
var body: some View {
switch store.state {
case .home:
HomeView()
case .detail:
if let store = store.scope(state: \.detail, action: \.detail) {
DetailView(store: store)
}
case .settings:
if let store = store.scope(state: \.settings, action: \.settings) {
SettingsView(store: store)
}
}
}
}