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 的代码, 除了视图以外, 在苹果的所有平台上都通用.
单向数据流如下图所示:
一个更完整的图片:
使用方法
- 新建 State
- 新建 Store, 和 APP 生命期相同.
- APP 有且只有一个主 Reducer, 新建之.
- 将其他的 Reducer 作为主 Reducer 的内部 Reducer. 在主 Reducer 生成新状态时, 通过子 Reducer 来生成对应的状态分量.
- 视图订阅
在团队协作时候的使用
主要考虑多人开发的时候的协作问题, 是否可用?
通过状态改变来处理 APP 层级的路由功能
Action 的处理
在子 Reducer 中处理对应的 Action 即可.
关于异步处理的话, 异步操作需要一个开始的 action(可以携带参数), 一个结束的 action(可以携带异步操作结果), 这样就可以在开始的时候进行比如展示菊花这类的操作, 以及在结束的时候处理结果了.
Reswift 简介
https://blog.rayy.top/2020/11/15/2020-11-15-reswift-intro/