测试已测试 | ✓ |
Lang语言 | SwiftSwift |
证书 | MIT |
Released最后发布 | 2016年11月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✓ |
由 NicholasTD07 维护。
用 Swift 编写的另一个 Redux
将此仓库作为一个依赖项添加到您的 Package.swift
文件中,例如
import PackageDescription
let package = Package(
name: "Example",
dependencies: [
.Package(url: "https://github.com/NicholasTD07/TDRedux.swift.git",
majorVersion: 2),
]
)
Store 存储了一个 State。一个 State 是应用程序的完整内部状态,可以是任何东西。
您可以
Store
了解更多:Swift Redux 第一部分 - Store 和 State
一个 Reducer 是一个函数,它接受一个可选的 State 和一个 Action 并返回一个新的 State,定义如下
class Store<State> {
typealias Reducer = (State?, Action) -> State
}
了解更多:Swift Redux 第一部分 - Reducer 和 Action
Action 描述了一个发生了什么事件,并且可能携带一些数据,例如 AddTodo(text: "buy milk")
或 ToggleTodo(atIndex: 1)
Action
的类型定义为
typealias Action = Any
了解更多:Swift Redux 第一部分 - Reducer 和 Action
Reducer
函数它是一个辅助函数,用于封装接受必须类型为 State
和特定类型的 Action
的 Reducers,这样:在手动编写的 Reducers 中不再需要进行类型转换。例如
typealias CounterState = Int
enum CounterActions {
case increase
case decrease
}
let counterReducer: (CounterState, CounterActions) = /* ... */
let wrappedReducer: (CounterState?, Any) = Reducer(initialState: 0, reducer: counterReducer)
let counterStore = Store<CounterState>.init(with: wrappedReducer)
combineReducers
它是一个将一个 Reducers 数组组合为单个函数的辅助函数。例如
typealias State = /* ... */
let arranOfReducers: [(State?, Any)] = [ /* ... */ ]
let combinedReducers: (State?, Any) = combineReducers(arranOfReducers)
它提供了分发操作和操作到达 reducer 的时刻之间的第三方扩展点。
final
Store
以及Store
中的每一个属性和方法均被定义为final
。
请告诉我,您是否认为需要子类化和覆盖Store
。
我对Redux中的这个概念不太熟悉,并且也不确定我的实现是否可能存在潜在问题。
TDRedux是在MIT许可证下发布的。有关详细信息,请参阅LICENSE。