Fluxer 1.4.0

Fluxer 1.4.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最后发布2017 年 9 月
SwiftSwift 版本3.0
SPM支持 SPM

rb_de0 维护。



Fluxer 1.4.0

Fluxer

Swift Flux 框架

要求

  • Swift 3.1 或更高版
  • Xcode 8.3.3 或更高版
  • iOS 9.0 或更高版

使用方法

存储

存储维护应用程序和屏幕的状态。请按照以下方式定义。

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

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())

AsyncActionCreator

派发器可以异步发出动作。请按以下方式注册。

dispatcher.dispatch { callback in

     // do background tasks
    callback(HogeAction())
}

waitFor

通过在派发器中使用 waitFor 方法,您可以控制调用 ActionHandler 的顺序。

Observable

在 Fluxer 中,我们使用 Observable 订阅存储的状态。

ObservableValue

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

Disposable 是一个管理 Observable 订阅的对象。在 Fluxer 中,您可以使用两个 Disposable。

BlockDisposable

当调用 dispose 时,Reusable 会执行 Block。

CompositeDisposable

管理多个 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)
}

未来改进

  • 文档
  • 某些操作符
  • Swift包管理器测试

作者

rb_de0, [email protected]

许可

Fluxer可在MIT许可下使用。请参阅LICENSE文件获取更多信息。