適合 SwiftUI 的架構

Redux 基本概念

  1. App 為一個狀態機,狀態決定用戶介面。
  2. 這些狀態(State)都保存在一個 Store 物件中。
  3. View 不能直接操作 State,只能通過發送 Action 的方式間接改變儲存在 Store 中的 State
  4. Reducer 接受原有的 State 和發送過來的 Action,生成新的 State
  5. 用新的 State 替換 Store 中原有的狀態,並用新的狀態來驅動更新介面。

Store

應用程式只有一個 Store,用來保存整個應用程式的 State。 可以透過 store.getState() 取得應用程式當前狀態,但不能直接修改。

Action

Action 為一個普通的物件,用來描述應用程式發生的事情,把數據傳遞給 Store 的唯一途徑。

Reducer

Reducer.reduce(state: action:)是純函數,具體處理狀態的邏輯。

純函數:返回值只由調用時的參數決定,不依賴於任何系統狀態,也不改變其作用域之外的變量狀態的函數。

struct Reducer {
    static func reduce(state: State, action: Action) -> State {
        return state.apply(item: action)
    }
}