大家对 react 的看法?

267 天前
 yocoso

我用 react 不久,之前用的 backbone 这种比较基础的框架。一开始用 react 的时候觉得很好用,丰富的 library 极大的节省了开发时间,随着项目开始变得复杂,我发现 state management 部分真的反直觉。我用的 redux toolkit 。现在每次做比较复杂的 state 的变化管理,都得重新理解一遍之前写的代码,state 管理有些是通过自定义的 hooks 实现,给 state 的变化又加上一层迷雾。不知道是我的架构有问题吗,为啥感觉这么弯弯绕呢。 大家使用 react 有类似感受吗?

4245 次点击
所在节点    React
18 条回复
yanggggjie
267 天前
因为不该用 redux 了,上 zustand 吧
GeekGao
267 天前
或许你可以尝试一下利用 Jotai 管理状态 ,我觉得很好用
gouflv
267 天前
你好,react 是这样的
Perry
267 天前
你 state management 有写 unit tests 么?感觉用 redux 有 test coverage 和没有是两种不同的感觉。你用了 toolkit 至少 type 上容易了很多了,以前只用 redux 的时候 typing 还需要很多 boilerplate 去 setup 。
charlie21
267 天前
redux 的部分,请理解 flux 和单向数据流 不可变数据的好处

hook 的部分请理解纯函数组件是什么,class component 是把状态写在组件里、用 hook 的组件是试图把状态分离出来,为什么要把状态分离出来,看一看老的 react doc
Immortal
267 天前
现在主流是 Jotai 作为状态管理吧
react 现在的优势主要还是生态,但是 benchmark 的性能测试下来还是有点弱
再回到年初的 rv 大战,我觉得尤说的也有点道理,大意是框架的缺陷不去处理,光想着让用户看文档来避坑
chenliangngng
267 天前
redux 想学明白,没有个 2 年学不清楚,建议只用就是,就当写死的套路,可以的话,用其他状态管理解决方案代替 redux
stimw
267 天前
大部分状态都由 react query 自动管理了,剩下就是客户端状态之类的 context 能解决,或者直接用 jotai 、zustand 之类的库。
redux/rtk 放现在就是💩。
Removable
267 天前
Jotai +1 ,作为后端兼职 react 开发,从来没用过 redux
l4ever
267 天前
直接用 context 做状态管理。不用第三方的。自己实现的放心
likunyan
266 天前
没人用 recoiljs ?
sjhhjx0122
266 天前
如果状态不复杂,不需要很好的性能直接用 context 封装个 hook 做状态管理,等性能跟不上了直接替换底层变成 jotai 什么的,redux 模板代码太多了
stimw
266 天前
@likunyan 因为 jotai 是同类型的完美替代。。。
我刚看见 Facebook 的 sapling 仓库从 recoil 换到了 jotai
weichengwu
266 天前
歪个题,jotai 和 zustand 哪个更适合 react native ?
houshuu
265 天前
完全是 redux 的锅,如果订阅或者说 selector 多用 recoil 方便,一般就 zustand 足矣
rizon
264 天前
用 zustand ,jotai 这种第三方的管理会简化一些麻烦。
但无论如何,react 的状态管理确实很灾难,几个核心点:
1 ,如何获取最新状态值避免拿到的是历史状态
2 ,如何获取历史触发时刻的状态值,避免拿到最新的值
3 ,状态值变化会导致组件刷新,组件刷新又可能触发子组件刷新。为了避免组件树上不必要的大量刷新,如何精准的管理状态值,不让无关状态导致组件刷新。

前两点还好说,第三点我花费了很多时间去搞清晰。
我认为这三点搞清楚后对 react 的恐惧也就没了。

总之,react 状态管理确实是有蛮多槽点,而且如果不小心对待,容易带来渲染性能问题。
n18255447846
264 天前
- redux 里的 state 一般是全局的,用来在各层级组件之间共享,redux 就相当于进阶版 context
- hooks 主要用来解决函数组件的复用问题,state 也可以不用写到自定义的 hook 里

要知道以前的函数式组件只是个 render ,hooks api 出来后各种乱玩...
roundgis
191 天前
现在用 valtio

我的 app 规模都不大

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

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

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

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

© 2021 V2EX