美文网首页rx
ReactorKit架构

ReactorKit架构

作者: FallPine | 来源:发表于2018-09-17 17:56 被阅读156次
    • ReactorKit 是一个轻量的响应式编程框架。它结合了 Flux 和响应式编程。用户行为和页面状态都是通过序列相互传递。同时这些序列都是单向的:

      • 页面(View)只能发出用户行为。
      • 而反应器(Reactor)只能发出状态
    • 整体架构

    使用 ReactorKit 架构后代码根据职能分为 View(视图)和 Reactor(响应器)两部分:

    • View 是用户直接操作的层级,我们通过监测用户在 View 上的行为,转化成 Action 反馈给 Reactor。
    • Reactor 处理之后又把响应状态 State 传递给 View 层,View 这边显示最终的传递的状态。

    简单来说就是 View 层只发出行为,而 Reactor 只发出状态,相互把对方所需要的东西传递给对方,构成一条响应式的序列。

    • Reactor 代码结构

    • Reactor 是与 UI 相互独立的一层,它的作用就是将业务逻辑从 View 中抽离。也就是说每一个 View 都有对应的 Reactor ,并且将所有的逻辑代理都较给 Reactor(Reactor 接收到 View 层发出的 Action,然后通过内部操作,将 Action 转换为 State。)

    • 定义一个 Reactor 需要遵守 Reactor 协议,该协议定义了如下内容:
      四个响应属性:Action、Mutation、State、initialState。
      两个响应方法:mutate()、reduce()

    • 这些响应属性和响应方法的作用,以及相互关系如下:

      • Action:描述用户行为
      • Mutation:描述状态变更( 它可以看作是 Action 到 State 的桥梁)
      • State:描述当前状态
      • initialState:描述初始化状态
      • mutate():处理 Action 执行一些业务逻辑,并转换为 Mutation。
      • reduce(): 通过旧的 State 以及 Mutation 创建一个新的 State。
    • View 代码结构

    • View 为数据展示层,不管是 UIViewController 还是 UIView 都可以看作是 View。View 主要负责发出 Action,同时将 State 绑定到 UI 组件上。

    • 定义一个 View 只需要让它遵循 ReactorKit 的 View 或 StoryboardView 协议即可:

      • 如果 ViewController 是纯代码开发的:则其遵守 View 协议。
      • 如果 ViewController 是 Storyboard 开发的:则其遵守 StoryboardView 协议。
    • View 中需要定义如下内容:

      • disposeBag 属性:协议属性。当 View 的 reactor 变化时,之前的 disposeBag 会自动 disposed。
      • bind(reactor:) 方法:实现用户输入绑定和状态输出绑定。
    • 协议中的 bind() 方法不需要我们手动去调用。遵循 View 协的类将自动获得一个 reactor 属性。当 View 的 reactor 属性被设置时,bind() 方法就会被自动调用。而 reactor 属性的设置又分两种情况:

      • 纯代码开发的 ViewController 则在其创建实例对象后,直接注入 reactor:
      • 使用 Storyboard 的 ViewController 则需要在其内部的 viewDidLoad() 方法中设置 reactor

    参考文章:Swift - RxSwift的使用详解72(ReactorKit架构1:安装配置、基本用法)
    Swift - RxSwift的使用详解73(ReactorKit架构2:一个用户注册样例)
    Swift - RxSwift的使用详解74(ReactorKit架构3:GitHub资源搜索样例)

    相关文章

      网友评论

        本文标题:ReactorKit架构

        本文链接:https://www.haomeiwen.com/subject/lobrnftx.html