ReSwiftの流れ
ReSwiftというSwiftのRedux実装のライブラリを触ってみました。
- アプリはStoreを一個持ちStoreはこちらで定義した状態(State)を持ちます。
- 各種のReducerというのをStoreに登録します。
- ReducerはActionが発行されたらどのようにStateを変更するのか各自で定義します。
- ボタンがタップされたなどのイベントが起きたとき、プログラマはアクションをストアに送ります(dispatch)、するとストアではReducerに今の状態とアクションを食わせて新しい状態にします。
- 新しい状態はそれを監視(subscribe)しているオブジェクトにnewStateとして通知されるという具合です。
擬似コードでのまとめ
State定義
Action定義
各種Reducer定義
Reducer (Action, State) -> State
Store作成
Store = {State, Reducers}
状態更新を受取りたい場合
Store.subscribe(User)
タップのイベント等が起きたことを通知
Store.dispatch(Action)
reducerによってState更新され状態変更が通知される。
ViewControllerはアクションを発行し状態変更通知を受けたら状態に基づいてUIを変更するという流れになります。
参照
簡単なコードサンプルとして
GitHub - ReSwift/CounterExample: Demo Application of Unidirectional Data Flow in Swift, Built with ReSwift
より実際的な実装例は以下にありました。
qiita.com