什么需求不得不用 redux 这种全局状态管理工具

2022-09-28 14:20:49 +08:00
 quehei

目前遇到的组件通信都会使用 context 完成业务需求,感觉并不是必须使用全局状态管理。有大佬可以列举一下必须使用全局状态管理才能实现的需求嘛,感觉自己以前业务真的是强行使用的,并不是被逼的不得不用

4562 次点击
所在节点    程序员
46 条回复
Chad0000
2022-09-28 14:22:55 +08:00
使用 angular 从来没有这种顾虑
Promisei
2022-09-28 14:24:28 +08:00
两个没关系的组件都要使用到 token 用 redux 进行 token 管理
quehei
2022-09-28 14:26:11 +08:00
@Chad0000 我比较疑惑的是什么类型的业务使用全局状态管理比较划算
quehei
2022-09-28 14:27:27 +08:00
@Promisei 单纯的 useContext 就可以实现的啊
catchecken
2022-09-28 14:33:23 +08:00
@quehei context 的性能十分差.redux 可以做到按需更新组件.
quehei
2022-09-28 14:39:53 +08:00
@catchecken redux 也是把 store 更新到 context 里啊,大家提升代码复杂度使用 redux 是为了提高组件性能?依据是什么呀
Chad0000
2022-09-28 14:49:35 +08:00
@quehei
比如地区登陆状态?当前选择的资源比如当前选择的学校 /项目?还有全局批量上传进度?
dk7952638
2022-09-28 14:50:20 +08:00
以我肤浅的实践来看,多层属性传递的嵌套组件用状态管理确实比较方便,他的场景暂时还没发现是必须的
whenov
2022-09-28 14:51:05 +08:00
Redux 产生的时期还不存在 Context API ,现在很多场景下应该可以不用 Redux 的
catchecken
2022-09-28 14:51:45 +08:00
@quehei 错,store 没有更新
catchecken
2022-09-28 14:53:02 +08:00
redux context Provider 的 value 没有更新
@quehei
hua123s
2022-09-28 14:55:30 +08:00
zustand/jotai 才是正解,放弃 redux 吧。
Promisei
2022-09-28 14:56:12 +08:00
@quehei useContext 必须得是子孙组件才能传吧 如果两个组件毫无关联 useContext 用不到哦
wangxiaoaer
2022-09-28 14:57:49 +08:00
恕我直言,80%的前端页面(展示类、增删改查类)都用不到状态管理。

需要状态管理的是交互多并且存在联动的情况,比如在线 PS 、地图类等。
wangxiaoaer
2022-09-28 14:59:46 +08:00
@Chad0000 #1 Angular 当初尝试过,那个 module 系统就把我干蒙蔽了,TS/JS 本身的 import/export 再加上 ng 自己的 import/export ,一下就上天了。
quehei
2022-09-28 15:00:12 +08:00
@Promisei 我的意思是在根组件或者 layout 这种地方挂 context ,不存在两个毫无关联的组件啊。使用 redux 不也是在根组件把 store 传到 context 里面
quehei
2022-09-28 15:02:51 +08:00
@catchecken 传一个 valueChange 的方法在 value 里面是不是可以做到更新呢
TWorldIsNButThis
2022-09-28 15:02:59 +08:00
写过一个需求感觉比较合适,有个开会模式,开会时需要广播当前用户的所有状态(列表内容,过滤器选项等)和操作到其他用户上
然而这个需求是后来才提的,一开始搭架构的时候状态就是分散的,用 swr 管理请求的数据,最后也是把各个操作每个都加上同步
dsggnbsp
2022-09-28 15:08:24 +08:00
用不到就不用,不用随大流
catchecken
2022-09-28 15:17:45 +08:00
@quehei 是的.
redux 的顶层 context 传递的是 store 的包裹对象,这个对象的引用是不变的.
组件可以访问 store.
使用 redux 的组件感知 store 更新的原理是发布订阅.组件挂载的时候会订阅 store 更新.store 更新后订阅 store 的组件会自动更新.
跟 context 没有关系.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/883539

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX