2022 年,推荐的 React 状态管理框架是? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
devcat9
V2EX    React

2022 年,推荐的 React 状态管理框架是?

  •  1
     
  •   devcat9 2022-03-14 12:49:52 +08:00 10633 次点击
    这是一个创建于 1306 天前的主题,其中的信息可能已经有所发展或是发生改变。

    好久没做前端了,最近看看了 React 前端状态管理,感觉依旧很难选择。

    Redux 这类框架感觉写起来实在是太累。

    Mobx 之前很看好,但是现在似乎也没什么人气了。

    https://openbase.com/categories/js/best-react-state-management-libraries 这里提到了 xstate 和一些其他的新库,但是都感觉各有千秋吧。

    不知道大家在 2022 年更推荐什么?

    64 条回复    2022-03-15 15:46:25 +08:00
    gouflv
        1
    gouflv  
       2022-03-14 13:00:09 +08:00   2
    在关注 zustand 和 recoil
    CodingNaux
        2
    CodingNaux  
       2022-03-14 13:15:17 +08:00
    没做 web app,所以用的都是 context + hook
    maichael
        3
    maichael  
       2022-03-14 13:32:02 +08:00
    SWR+Recoil
    Chism
        4
    Chism  
       2022-03-14 13:32:03 +08:00
    这个跟用 class 还是 function 组件也有关吧
    me221
        5
    me221  
       2022-03-14 13:33:31 +08:00
    recoil
    dany813
        6
    dany813  
       2022-03-14 13:33:41 +08:00
    还是 redux 习惯了,加上 context
    sweetcola
        7
    sweetcola  
       2022-03-14 13:36:51 +08:00
    目前还是 Redux ,配合 reduxjs/toolkit 能减少一些代码量。

    Recoil 还是等正式版出来后才再去考虑是否能替换 Redux 。
    lokya
        8
    lokya  
       2022-03-14 13:38:13 +08:00
    看需求吧 我们现在还在用 dva 但是 纯 context 也蛮好用的,recoil 有了解过那会还没发正式版 ,就没用
    4BVL25L90W260T9U
        9
    4BVL25L90W260T9U  
       2022-03-14 13:54:20 +08:00
    useSWR + useReducer
    xff1874
        10
    xff1874  
       2022-03-14 13:58:10 +08:00
    jotai 吧,简单一点。
    ericgui
        11
    ericgui  
       2022-03-14 14:00:51 +08:00
    你用习惯了 redux ,其实挺好用的
    Immortal
        12
    Immortal  
       2022-03-14 14:02:05 +08:00
    在用 rematch,关注 recoil
    fengfuliu
        13
    fengfuliu  
       2022-03-14 14:04:03 +08:00
    TWorldIsNButThis
        14
    TWorldIsNButThis  
       2022-03-14 14:10:14 +08:00
    @ospider
    @maichael
    老哥们能否帮忙看下 swr 的这个问题 感谢
    t/839773
    wuchangming89
        15
    wuchangming89  
       2022-03-14 14:13:45 +08:00
    一直 MobX ,双向绑定简简单单,不花里胡哨
    SolidZORO
        16
    SolidZORO  
       2022-03-14 14:17:56 +08:00 via iPhone
    jotai + react-query.
    duduaba
        17
    duduaba  
       2022-03-14 14:19:19 +08:00
    mobx 吧,语法简练易懂,主要是快。
    bnrwnjyw
        18
    bnrwnjyw  
       2022-03-14 14:31:22 +08:00
    {}
    creanme
        19
    creanme  
       2022-03-14 14:36:44 +08:00
    要不试试 jotai ?
    L1shen
        20
    L1shen  
       2022-03-14 14:39:28 +08:00
    喜欢 mobx 的也可以试试 valtio, 跟 jotai 同一个组织写的
    cloudzqy
        21
    cloudzqy  
       2022-03-14 14:45:59 +08:00
    现在写的业务都太简单了,我都是 hook 直接撸了,唉。
    dartabe
        22
    dartabe  
       2022-03-14 14:57:51 +08:00
    Redux toolkit 别整那些花里胡哨的
    WhiteHu
        23
    WhiteHu  
       2022-03-14 15:12:07 +08:00
    @maichael 正解 我们封装了一套 现在用的很爽
    liuzhaowei55
        24
    liuzhaowei55  
       2022-03-14 15:31:58 +08:00 via iPhone
    mobx react lite 加上 mobx state tree 挺好用的
    kingsleydon
        25
    kingsleydon  
       2022-03-14 15:33:11 +08:00
    react-query + jotai
    dcsuibian
        26
    dcsuibian  
       2022-03-14 15:36:10 +08:00   1
    师傅多了房子歪
    newbieRenew
        27
    newbieRenew  
       2022-03-14 15:37:13 +08:00
    @me221
    @maichael

    粗略看了下文档,Atom 可以写在任意组件类,优点是灵活,缺点是不是太灵活?你们使用时有约束吗
    westoy
        28
    westoy  
       2022-03-14 15:38:49 +08:00   1
    怎么生成一个随机字符窜?

    十几年前: 随机读取一个 perl 文件

    现在: 问拿什么做 react 的状态管理后随机抽取一个答案
    linkopeneyes
        29
    linkopeneyes  
       2022-03-14 15:44:08 +08:00   2
    其实都挺累的 jotai ,valtio ,zustand ,recoil 这些 hook 时代的新状态管理库,用各种 hook 包来包去,而且你敢信吗,前面三个还是一个组织下的,如果没有性能需求 context 直接封装一下就够用了,封装着封装着就变成了一个新的状态管理库,kpi 到手,公司也离不开你了,如果不嫌麻烦 rxjs 自己封装一下我觉得不错
    Removable
        30
    Removable  
       2022-03-14 15:46:46 +08:00   1
    后端选手自学 react ,用的是 recoil
    c1273082756
        31
    c1273082756  
       2022-03-14 16:03:00 +08:00
    dva?
    RogerL
        32
    RogerL  
       2022-03-14 16:08:26 +08:00
    zustand, jotai, valtio
    rioshikelong121
        33
    rioshikelong121  
       2022-03-14 16:11:40 +08:00
    我记得有个 github 仓库列出了几十个状态管理库,谁能把那个库贴出来.
    dasbn
        34
    dasbn  
       2022-03-14 16:22:37 +08:00
    rioshikelong121
        35
    rioshikelong121  
       2022-03-14 16:29:19 +08:00
    @dasbn 我记得有个内容更多的仓库.不是这个
    me221
        36
    me221  
       2022-03-14 16:32:54 +08:00
    @Removable +1, recoil 一看就会, 什么 redux mobx 一脸懵逼
    mwVYYA6
        37
    mwVYYA6  
       2022-03-14 16:36:44 +08:00
    最近试了 recoil ,可以比 context api 少写一点代码
    um1ng
        38
    um1ng  
       2022-03-14 17:18:19 +08:00
    其实 vue3 的状态管理 pinia 还是挺好用的
    f360family123
        39
    f360family123  
       2022-03-14 17:18:31 +08:00
    react-query
    charlie21
        40
    charlie21  
       2022-03-14 17:27:02 +08:00
    一般思路是 UI state 和 server cache 分开 参考 https://kentcdodds.com/blog/application-state-management-with-react
    server cache 的状态交给 react-query , UI state 直接 context 。 如果要加入额外的层 用 redux
    justin2018
        41
    justin2018  
       2022-03-14 17:33:49 +08:00
    w88975
        42
    w88975  
       2022-03-14 17:35:39 +08:00
    mobx 是我用过最纯的
    fernandoxu
        43
    fernandoxu  
       2022-03-14 17:51:37 +08:00   2
    zhwithsweet
        44
    zhwithsweet  
       2022-03-14 19:09:31 +08:00
    不怕麻烦的话,可以用 @vue/reactivity ,整活
    wobuhuicode
        45
    wobuhuicode  
       2022-03-14 19:53:16 +08:00
    和当年一样,用 redux
    vision1900
        46
    vision1900  
       2022-03-14 19:54:42 +08:00 via Android
    Mobx 挺好,只是 React 现在 All In 函数式编程了,两者结合就很奇怪
    Cbdy
        47
    Cbdy  
       2022-03-14 19:57:07 +08:00
    Jotai
    dany813
        48
    dany813  
       2022-03-14 19:57:27 +08:00
    @f360family123 这个是管理 http 接口的吧
    f360family123
        49
    f360family123  
       2022-03-14 20:12:17 +08:00
    @dany813 是的,但是一般应用场景下数据都是从接口拿到的。只要管理接口的数据就可以了,剩下的用 Context
    isbase
        50
    isbase  
       2022-03-14 21:18:24 +08:00
    久经考验的还是 redux + hooks ,小点的项目自己封装一些 hooks 配合 context 够用了。

    重量级项目可以上 redux ,其他的不推荐
    posebear1990
        51
    posebear1990  
       2022-03-14 21:23:41 +08:00
    贴一篇旧文: [You Might Not Need Redux]( https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367)
    agdhole
        52
    agdhole  
       2022-03-14 21:25:37 +08:00
    Recoil 很好用
    alexmy
        53
    alexmy  
       2022-03-14 21:35:40 +08:00
    hooks + mobx ,一般习惯了就先不换了吧,前端变化那么快,真心赶不上。何况,我是做后端的。
    poplar50
        54
    poplar50  
       2022-03-14 22:44:20 +08:00 via Android
    tanstack
    shaodeyu1943
        55
    shaodeyu1943  
       2022-03-14 22:55:44 +08:00
    @ospider 老哥,看你一直安利这个。
    XTTX
        56
    XTTX  
       2022-03-14 23:45:58 +08:00
    写习惯了 dispatch reducer 的话,zustand 上手是很快的。自带的 persist localstorage 也很舒服。 再加上 immer 去改 nested object,我觉得比 redux,useContext 什么的舒服很多。
    rannnn
        57
    rannnn  
       2022-03-15 00:00:19 +08:00
    上 GraphQL 用 Apollo 或者 Relay , 剩下的情况 context 就可以搞定
    fuermosi777
        58
    fuermosi777  
       2022-03-15 05:27:44 +08:00
    前端变化好快,以前用 mobx 很顺手,时隔几年不写前端,再看已经百花齐放了。
    kensoz
        59
    kensoz  
       2022-03-15 07:47:56 +08:00
    recoil
    Torpedo
        60
    Torpedo  
       2022-03-15 09:56:46 +08:00
    redux 挺好的。可以各种自己定制
    iamvvv
        61
    iamvvv  
       2022-03-15 10:10:25 +08:00
    dva 很舒服
    yazoox
        62
    yazoox  
       2022-03-15 10:28:09 +08:00
    还是在用 redux + redux-saga
    ......
    zishaofei221
        63
    zishaofei221  
       2022-03-15 11:11:00 +08:00
    小的 hooks
    大的 concentjs
    undermoodzyx
        64
    undermoodzyx  
       2022-03-15 15:46:25 +08:00
    dva 加 model 工厂模式,嗯,好吃
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2645 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 15:14 PVG 23:14 LAX 08:14 JFK 11:14
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86