はじめに
ReSwiftの勉強をしていて、Storeに登録するReducerが複数の時どうするんだっけ?と思ったのでメモです。
CounterExample
ReSwiftの公式の「CounterExample」を見ていて、以下のコードがありました。
AppDelegate.swift
import UIKit
import ReSwift
// The global application store, which is responsible for managing the appliction state.
let mainStore = Store<AppState>(
reducer: counterReducer, //<---複数の時どうするの?
state: nil
)
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
Reducerを複数登録する時ってどうすればいいんだろう?と疑問に思いました。
調べてみたら、Issuesにありましたね。
Is_it_possible_to_specify_an_array_of_reducers?#340
func combineReducers<T>(_ first: @escaping Reducer<T>, _ remainder: Reducer<T>...) -> Reducer<T> {
return { action, state in
let firstResult = first(action, state)
let result = remainder.reduce(firstResult) { result, reducer in
return reducer(action, result)
}
return result
}
}
let reducer = combineReducers(first, second, third) // <--- これを使う!
stateやらreducerやらもう少し細かく分けると、自作しないといけないような気がしますが、とりあえずこいつを使っていくことにします。