CompleteRedux
iOS 客户端的 Redux 实现。
动机
尽管我非常喜欢在开发中使用 RxSwift,但它有时会产生很多噪音,并且对单元测试来说是具有挑战性的。作为 React.js 开发者已经过去一年了,我期待在 iOS 应用程序中也能使用 Redux。但是,当前最流行的 Redux 实现与原始的 redux/react-redux 源码相比,在许多关键方面存在不足。
- 视图控制器仍然知道太多——在 React.js 中,我们有奇妙的 connect 函数来调用 mapState/DispatchToProps,但是在这里我们仍然只能调用 store.dispatch(Action)。视图不应该知道要派发哪些动作;
- 订阅和取消订阅仍然使用 store.(un)subscribe(self) 手动完成——如果我不想使用单例,我该怎么办?
- 异步工作处理仍然模糊不清。在 React.js 中我们运行 redux-saga 或 redux-thunk,但是这里没有类似的东西;
主要功能
此库提供以下功能:
- 一个简单、线程安全的 Redux 存储;
- 中间件支持;
- 为兼容 Redux 的视图/视图控制器提供属性注入;
- 一个 路由中间件实现;
- 一个副作用模型(受 redux-saga 启发),用于处理异步工作;