结合 Bloc

使用 Apple 的 Combine 框架实现的 ´BLoC´(业务逻辑组件)。

Swift Version License Actions Status

BLoC 是一种业务逻辑层抽象,您在其中输入 Event(事件)并输出 State(状态)。这种抽象有助于构建遵循单向数据流和具有单一数据源的响应式应用程序。来自 CombineBloc 包的 Bloc 是一个复合对象,它具有一个接收 EventSubscriber(订阅者)和一个发布 StatePublisher(发布者)。每次 Subscriber 接收到新的 Event 时,都会在 Bloc 内部调用一个闭包。此闭包可以通过 Publisher 发出一个新的 State

关键点是

此软件包的灵感来源于 Paolo Soares 在 2018 年 DartConf 上提出的 BLoC 概念,以及 Felix Angelov 的 Flutter Bloc 状态管理库。

安装

将此项目添加到您的 Package.swift

import CombineBloc

let package = Package(
    dependencies: [
        .Package(url: "https://github.com/wjuniorgit/combine-bloc", from: "0.2.0"),
    ],
)

使用示例

此软件包实现了三个用例示例

计数器 Bloc 示例

计数器事件

enum CounterEvent: Equatable {
case increment
case decrement
}

计数器状态

struct CounterState: Equatable {
let count: Int
}

计数器 Bloc

final class CounterBloc: Bloc<CounterEvent, CounterState> {
init() {
    super.init(initialValue: CounterState(count: 0)) {
        event, state, emit in
        switch event {
        case .increment:
            emit(CounterState(count: state.count + 1))
        case .decrement:
            emit(CounterState(count: state.count - 1))
        }
      }
    }
  }

发布历史

元信息

Wellington Soares

根据 MIT 许可证分发。有关更多信息,请参阅 LICENSE