React Native 新架构实战课
蒋宏伟
58 同城前端架构师,58RN 负责人
18214 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
React Native 新架构实战课
15
15
1.0x
00:00/00:00
登录|注册

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
立即购买
登录 后留言

全部留言(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🙂
    能不能讲讲全局状态的场景,感觉很多情况不需要redux
    2022-06-15
    1
  • python4
    函数命名上加一点redux概念是否更好, 方便新手牢记概念, 比如: filter -> filterReducer
    2022-05-14
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部