TDRedux.swift 2.0.1

TDRedux.swift 2.0.1

测试已测试
Lang语言 SwiftSwift
证书 MIT
Released最后发布2016年11月
SwiftSwift 版本3.0
SPM支持 SPM

NicholasTD07 维护。



TDRedux

用 Swift 编写的另一个 Redux

安装

Swift Package Manager

将此仓库作为一个依赖项添加到您的 Package.swift 文件中,例如

import PackageDescription

let package = Package(
    name: "Example",
    dependencies: [
        .Package(url: "https://github.com/NicholasTD07/TDRedux.swift.git",
                 majorVersion: 2),
    ]
)

TDRedux

Store

Store 存储了一个 State。一个 State 是应用程序的完整内部状态,可以是任何东西。

您可以

  • 使用 Reducer 创建一个 Store
  • 分发 Actions 以改变 StoreState
  • 订阅 StoreState 发生变更

了解更多:Swift Redux 第一部分 - Store 和 State

Reducer 类型

一个 Reducer 是一个函数,它接受一个可选的 State 和一个 Action 并返回一个新的 State,定义如下

class Store<State> {
    typealias Reducer = (State?, Action) -> State
}

了解更多:Swift Redux 第一部分 - Reducer 和 Action

Action

Action 描述了一个发生了什么事件,并且可能携带一些数据,例如 AddTodo(text: "buy milk")ToggleTodo(atIndex: 1)

Action 的类型定义为

typealias Action = Any

了解更多:Swift Redux 第一部分 - Reducer 和 Action

Reducer 函数

它是一个辅助函数,用于封装接受必须类型为 State 和特定类型的 ActionReducers,这样:在手动编写的 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)

Middleware

它提供了分发操作和操作到达 reducer 的时刻之间的第三方扩展点。

Redux 文档:Middleware

什么是实验性的?

商店中的所有内容均为final

Store以及Store中的每一个属性和方法均被定义为final

请告诉我,您是否认为需要子类化和覆盖Store

中间件

我对Redux中的这个概念不太熟悉,并且也不确定我的实现是否可能存在潜在问题。

许可证

TDRedux是在MIT许可证下发布的。有关详细信息,请参阅LICENSE。

阅读更多