適合 SwiftUI 的架構
Redux 基本概念
- App 為一個狀態機,狀態決定用戶介面。
- 這些狀態(
State
)都保存在一個Store
物件中。 - View 不能直接操作
State
,只能通過發送Action
的方式間接改變儲存在Store
中的State
。 Reducer
接受原有的State
和發送過來的Action
,生成新的State
。- 用新的
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)
}
}