测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | MIT |
Released最后发布 | 2017 年 9 月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✓ |
由 rb_de0 维护。
Swift Flux 框架
存储维护应用程序和屏幕的状态。请按照以下方式定义。
class MainStore: Store {
let value = ObservableValue(0)
required init(with dispatcher: Dispatcher) {
}
}
let mainStore = MainStore(with: dispatcher)
在 Store 初始化器中,请向派发器注册 ActionHandler。ActionHandler 的描述如下。
派发器管理多个 ActionHandler 并将动作告诉动作。请按以下方式实例化。
let dispacher = Dispatcher()
ActionHandler 从派发的动作更改存储。动作具有改变存储的数据。请按以下方式注册。
struct HogeAction: Action {}
class MainStore: Store {
let value = ObservableValue(0)
required init(with dispatcher: Dispatcher) {
let token = dispacher.register { [weak self] action in
self?.value.value = 10
}
}
}
let dispacher = Dispatcher()
let mainStore = MainStore(with: dispatcher)
dispatcher.dispatch(HogeAction())
派发器可以异步发出动作。请按以下方式注册。
dispatcher.dispatch { callback in
// do background tasks
callback(HogeAction())
}
通过在派发器中使用 waitFor 方法,您可以控制调用 ActionHandler 的顺序。
在 Fluxer 中,我们使用 Observable 订阅存储的状态。
let value = ObservableValue(0)
ObservableValue 是一个包含值的 Observable。您需要更改值属性。
let value = ObservableValue(0)
let disposable = value.asRender().subscribe { _ in
print(Thread.isMainThread) // => true
}
DispatchQueue.global().async {
value.value = 10
}
渲染是可以从其他 Observable 生成的 Observable。处理 Render 变化的方法总是在 UI 线程中执行。
Disposable 是一个管理 Observable 订阅的对象。在 Fluxer 中,您可以使用两个 Disposable。
当调用 dispose 时,Reusable 会执行 Block。
管理多个 Disposable 的 Disposable。
处置袋按照生命周期管理可 disposal 物品。
var disposeBag = DisposeBag()
let value = ObservableValue(0)
value.subscribe {
print($0)
}.addTo(disposeBag)
disposeBag = DisposeBag() // dispose
Fluxer为Observable提供了一些操作符。将来还会添加更多操作符。
映射是一个将Observable的值转换为任意类型的操作符。
let value = ObservableValue(0)
value.map { $0 + 1 }.subscribe {
print($0)
}
过滤器是一个只传递满足指定条件值的操作符。
let value = ObservableValue(0)
value.filter { $0 >= 0 }.subscribe {
print($0)
}
映射和过滤器可以组合使用。
let value = ObservableValue(0)
value.map { $0 + 1 }.filter { $0 >= 0 }.subscribe {
print($0)
}
Fluxer可在MIT许可下使用。请参阅LICENSE文件获取更多信息。