RxFeedback

2017-09-29  本文已影响140人  V_coa

RxFeedback

RxFeedback 是用于 RxSwift 的一个架构

为什么要使用它

Example

Observable.system(
    initialState: 0,
    reduce: { (state, event) -> State in
        switch event {
        case .increment:
            return state + 1
        case .decrement:
            return state - 1
        }
    },
    scheduler: MainScheduler.instance,
    scheduledFeedback:
    UI.bind(self) { me, state -> UI.Bindings<Event> in
        let subscriptions = [
            state.map(String.init).bind(to: me.countLabel.rx.text)
        ]
        
        let events = [
            me.plusBtn.rx.tap.map { Event.increment },
            me.minusBtn.rx.tap.map { Event.decrement }
        ]
        return UI.Bindings(subscriptions: subscriptions, events: events)
    }
)
.subscribe()
.addDisposableTo(disposeBag)
UI.bind(self) { me, state -> UI.Bindings<Event> in
    // state type 为 ObservableSchedulerContext<State>
    let subscriptions = [
        state.map(String.init).bind(to: me.countLabel.rx.text)
    ]
    
    let events = [
        me.plusBtn.rx.tap.map { Event.increment },
        me.minusBtn.rx.tap.map { Event.decrement }
    ]
    // 返回 Bindings<Event>,subscriptions bind 相关操作,events 相关事件
    return UI.Bindings(subscriptions: subscriptions, events: events)
}
上一篇 下一篇

猜你喜欢

热点阅读