19|Redux:大型应用应该如何管理状态?
蒋宏伟
你好,我是蒋宏伟。
今天这一讲,我要和你聊的是,如何使用 Redux 来管理复杂的、大型的应用状态。
有人认为,在 React 出了 hooks 之后,官方提供的 useReducer 和 useContext 的组合,已近似能够代替 Redux 了,所以,现在是时候抛弃 Redux,直接用 useReducer 和 useContext 对大型应用进行状态管理了。
也有人认为,虽然 Redux 解决了状态管理的问题,但是 Redux 模板代码太多,应该抛弃 Redux,改用 Mobx 或 Zustand 这类写起来更简单的工具。
但我认为,从目前来看,Redux 依旧是我们开发大型项目时,应该最优先考虑的状态管理工具。为什么呢?
一方面,大型项目的状态管理复杂度很高,useContext 并不是状态管理工具,它只是一个提供了跨层级传递状态的工具而已。真要拿 useReducer 和 useContext 来写大型项目,你需要写更多的模板代码,而且更难维护。
另一方面,开发大型项目需要考虑团队成员的协作成本,目前来看,无论是 npm trends 上的下载量,还是我对 React Native 开发者的调研报告都显示,Redux 的流行程度远超于其他状态管理工具。团队招一个新人,新人熟悉 Redux 概率远比熟悉 Mobx、Zustand 的概率更高,学习成本、协作成本也是最低的。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Redux是一个用于管理复杂大型应用状态的工具,尽管React的hooks提供了useReducer和useContext的组合,也有其他更简单的工具如Mobx和Zustand,但Redux仍然是开发大型项目时最优先考虑的状态管理工具。在大型项目中,状态管理的复杂度很高,而Redux通过Store存储全局状态,避免了整个应用的re-render,解决了状态需要逐层传递的问题,遇到性能瓶颈时能够提供帮助。此外,Redux Toolkit也能简化代码,减少BUG和消除常见的对Redux的误解。因此,当应用状态频繁更新遇到性能瓶颈、管理状态的逻辑复杂需要代码分治、多人协作开发需要遵守同一套最佳实践时,就是考虑使用Redux的时候了。 Redux的核心原理是State驱动View更新,用户操作View触发Action,再通过Action来更新State。在Redux中,State是存储在全局中的对象,用于描述整个应用的状态。View是JSX创建的视图,而Action是一个包含type字段的对象,用来描述“发生了什么事情”。Redux通过Reducer函数来处理不同分片状态,管理所有全局状态的函数和处理分片状态的Reducer函数共同完成状态更新和视图刷新的流程。 总之,Redux通过其独特的状态管理机制和工具,为开发者提供了一种有效管理复杂大型应用状态的解决方案,尤其适用于需要频繁状态更新、性能优化和多人协作开发的场景。Redux Toolkit和React Redux的结合使用,能够更好地实现全局状态管理,提高开发效率和代码质量。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《React Native 新架构实战课》,新⼈⾸单¥59
《React Native 新架构实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- Geek_4e11e2现在最新的react native版本是0.71. 我的app是0.63.4版本,请问老师,建议升级到那个版本比较好。在升级时候,需要注意哪些事项。2023-06-19归属地:福建
- 杨永安想知道在react native中,所有的js代码都是在同一个上下文的js运行时中吗? 否则Redux这种对象数据是如何跨页面共享的。 因为我之前接触到的是多个WebView这样的,他们的数据不能共享2023-04-14归属地:北京
- 海绵豹豹用FB的Recoil吧, Redux太啰嗦了而且心智负担较高2022-10-19归属地:山东1
- abc🙂能不能讲讲全局状态的场景,感觉很多情况不需要redux2022-06-151
- python4函数命名上加一点redux概念是否更好, 方便新手牢记概念, 比如: filter -> filterReducer2022-05-14
收起评论