Reswift 简介

本文最后更新于 2021年4月4日 晚上

在状态管理方案的红海中, 一股清流就是 Redux, 它提倡的单向数据流思想, 可以让程序的开发得到很大程度的简化. 下面就来介绍在 iOS 平台上的 Redux 实现: ReSwift.

概述

在 Redux(或 ReSwift) 中, 有如下概念:

  • View: 对 Store 的改变做出响应, 并发送 Action.
  • Actions: 引起 APP 状态改变. 由 Reducer 处理 Action.
  • Reducers: 直接改变存储在 Store 中的 APP 状态. 一般来说, Reducer 都是纯函数.
  • Store: 存放当前的 APP 状态. View 对状态进行订阅(观察), 从而可以根据状态的改变自动改变显示.

ReSwift 有如下优势:

  • 针对 APP 的架构而言, 有很强的约束力.
  • 单向数据流: 数据的起源总是在 action, 然后经过 reducer 加工后存放到 reducer 中, 再通过 reducer 的变化驱动视图变化.
  • 易于测试: 绝大部分的逻辑都包含在 Reducer 中, 并且由于 Reducer 是纯函数, 这样测试起来非常简单.
  • 平台无关: ReSwift 的代码, 除了视图以外, 在苹果的所有平台上都通用.

单向数据流如下图所示:

单向数据流

一个更完整的图片:

单向数据流

使用方法

  1. 新建 State
  2. 新建 Store, 和 APP 生命期相同.
  3. APP 有且只有一个主 Reducer, 新建之.
  4. 将其他的 Reducer 作为主 Reducer 的内部 Reducer. 在主 Reducer 生成新状态时, 通过子 Reducer 来生成对应的状态分量.
  5. 视图订阅

在团队协作时候的使用

主要考虑多人开发的时候的协作问题, 是否可用?

通过状态改变来处理 APP 层级的路由功能

Action 的处理

在子 Reducer 中处理对应的 Action 即可.

关于异步处理的话, 异步操作需要一个开始的 action(可以携带参数), 一个结束的 action(可以携带异步操作结果), 这样就可以在开始的时候进行比如展示菊花这类的操作, 以及在结束的时候处理结果了.


Reswift 简介
https://blog.rayy.top/2020/11/15/2020-11-15-reswift-intro/
作者
貘鸣
发布于
2020年11月15日
许可协议