我用 react 不久,之前用的 backbone 这种比较基础的框架。一开始用 react 的时候觉得很好用,丰富的 library 极大的节省了开发时间,随着项目开始变得复杂,我发现 state management 部分真的反直觉。我用的 redux toolkit 。现在每次做比较复杂的 state 的变化管理,都得重新理解一遍之前写的代码,state 管理有些是通过自定义的 hooks 实现,给 state 的变化又加上一层迷雾。不知道是我的架构有问题吗,为啥感觉这么弯弯绕呢。 大家使用 react 有类似感受吗?
1
yanggggjie 317 天前 1
因为不该用 redux 了,上 zustand 吧
|
2
GeekGao 317 天前 1
或许你可以尝试一下利用 Jotai 管理状态 ,我觉得很好用
|
3
gouflv 317 天前 via iPhone 1
你好,react 是这样的
|
4
Perry 317 天前 via iPhone
你 state management 有写 unit tests 么?感觉用 redux 有 test coverage 和没有是两种不同的感觉。你用了 toolkit 至少 type 上容易了很多了,以前只用 redux 的时候 typing 还需要很多 boilerplate 去 setup 。
|
5
charlie21 317 天前 via Android
redux 的部分,请理解 flux 和单向数据流 不可变数据的好处
hook 的部分请理解纯函数组件是什么,class component 是把状态写在组件里、用 hook 的组件是试图把状态分离出来,为什么要把状态分离出来,看一看老的 react doc |
6
Immortal 317 天前
现在主流是 Jotai 作为状态管理吧
react 现在的优势主要还是生态,但是 benchmark 的性能测试下来还是有点弱 再回到年初的 rv 大战,我觉得尤说的也有点道理,大意是框架的缺陷不去处理,光想着让用户看文档来避坑 |
7
chenliangngng 317 天前
redux 想学明白,没有个 2 年学不清楚,建议只用就是,就当写死的套路,可以的话,用其他状态管理解决方案代替 redux
|
8
stimw 317 天前
大部分状态都由 react query 自动管理了,剩下就是客户端状态之类的 context 能解决,或者直接用 jotai 、zustand 之类的库。
redux/rtk 放现在就是💩。 |
9
Removable 317 天前 via iPhone 1
Jotai +1 ,作为后端兼职 react 开发,从来没用过 redux
|
10
l4ever 316 天前
直接用 context 做状态管理。不用第三方的。自己实现的放心
|
11
QKgf555H87Fp0cth 316 天前
没人用 recoiljs ?
|
12
sjhhjx0122 316 天前
如果状态不复杂,不需要很好的性能直接用 context 封装个 hook 做状态管理,等性能跟不上了直接替换底层变成 jotai 什么的,redux 模板代码太多了
|
13
stimw 316 天前 via Android 1
@likunyan 因为 jotai 是同类型的完美替代。。。
我刚看见 Facebook 的 sapling 仓库从 recoil 换到了 jotai |
14
weichengwu 316 天前
歪个题,jotai 和 zustand 哪个更适合 react native ?
|
15
houshuu 315 天前 via iPhone
完全是 redux 的锅,如果订阅或者说 selector 多用 recoil 方便,一般就 zustand 足矣
|
16
rizon 314 天前 via iPhone
用 zustand ,jotai 这种第三方的管理会简化一些麻烦。
但无论如何,react 的状态管理确实很灾难,几个核心点: 1 ,如何获取最新状态值避免拿到的是历史状态 2 ,如何获取历史触发时刻的状态值,避免拿到最新的值 3 ,状态值变化会导致组件刷新,组件刷新又可能触发子组件刷新。为了避免组件树上不必要的大量刷新,如何精准的管理状态值,不让无关状态导致组件刷新。 前两点还好说,第三点我花费了很多时间去搞清晰。 我认为这三点搞清楚后对 react 的恐惧也就没了。 总之,react 状态管理确实是有蛮多槽点,而且如果不小心对待,容易带来渲染性能问题。 |
17
n18255447846 314 天前
- redux 里的 state 一般是全局的,用来在各层级组件之间共享,redux 就相当于进阶版 context
- hooks 主要用来解决函数组件的复用问题,state 也可以不用写到自定义的 hook 里 要知道以前的函数式组件只是个 render ,hooks api 出来后各种乱玩... |
18
roundgis 241 天前 via Android
现在用 valtio
我的 app 规模都不大 |