V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZoBoat
V2EX  ›  React

大家什么情况下用 Redux 呢

  •  
  •   ZoBoat · 2024-07-13 11:59:54 +08:00 · 7888 次点击
    这是一个创建于 408 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我觉得解决的最大问题是状态的封装,把它当做更好用的 reducer

    其次是复杂业务需要状态共享

    54 条回复    2024-07-16 10:26:05 +08:00
    4BVL25L90W260T9U
        1
    4BVL25L90W260T9U  
       2024-07-13 12:03:55 +08:00
    Redux 实在是太过度封装了。我选择用 nextjs + useReducer
    skyworker
        2
    skyworker  
       2024-07-13 12:07:36 +08:00   ❤️ 2
    反正我们的经验, 这玩意及其恶心, 最好别用.

    新版本已经把 Redux 从代码库中全部移除了
    otakustay
        3
    otakustay  
       2024-07-13 12:23:20 +08:00
    never
    chenliangngng
        4
    chenliangngng  
       2024-07-13 12:27:48 +08:00
    always not
    liuw666
        5
    liuw666  
       2024-07-13 12:40:15 +08:00 via iPhone
    应用全局状况,或者组建传递过于繁琐的的页面状态。 第二种,退出页面时我都会还原到初始状态
    XCFOX
        6
    XCFOX  
       2024-07-13 12:45:51 +08:00   ❤️ 1
    Redux 早该被扔进垃圾桶。
    状态管理建议用 zustand: https://github.com/pmndrs/zustand
    bzw875
        7
    bzw875  
       2024-07-13 12:49:35 +08:00
    接盘的时候,还是老外写的代码。概念一大堆,各种设计思想,我觉得 99%的项目不必用 redux
    Track13
        8
    Track13  
       2024-07-13 12:54:57 +08:00 via Android
    只有老项目和看培训班视频的人才用 redux 吧。正经人谁用这个啊
    revalue
        9
    revalue  
       2024-07-13 13:07:41 +08:00 via Android
    @XCFOX 四五年用的 redux 现在 useState ,看不懂了什么库了
    revalue
        10
    revalue  
       2024-07-13 13:08:55 +08:00 via Android
    前端发明了太多邪门玩意,真到接手的时候坑死了
    dartabe
        11
    dartabe  
       2024-07-13 13:12:29 +08:00
    前端就是 花不少时间学习的东西 过几年就没用了。。。

    当然函数式编程的概念还是不错的
    dwu8555
        12
    dwu8555  
       2024-07-13 15:02:07 +08:00
    Redux 已经过时了,直接用 react hook 就行了
    qiqw
        13
    qiqw  
       2024-07-13 15:05:33 +08:00
    我喜欢 recoil: https://recoiljs.org
    masterclock
        14
    masterclock  
       2024-07-13 15:40:29 +08:00
    十几年前?
    jsq2627
        15
    jsq2627  
       2024-07-13 15:42:21 +08:00
    接老项目还用,新项目基本没人用了
    ZoBoat
        16
    ZoBoat  
    OP
       2024-07-13 17:21:38 +08:00
    @ospider useReducer 没办法创建全局状态
    ZoBoat
        17
    ZoBoat  
    OP
       2024-07-13 17:21:54 +08:00
    @skyworker 什么新版本
    kenberkeley
        18
    kenberkeley  
       2024-07-13 17:29:24 +08:00 via iPhone
    没有一定规模的项目其实看不出来好处,尤其是国内经常不写单元测试的情况下,基本就是没啥优势。
    lee88688
        19
    lee88688  
       2024-07-13 18:23:50 +08:00   ❤️ 1
    现在用 redux 确实少了很多,的确比较复杂。不过 redux 不仅仅可以做状态管理,还可以做成事件触发器,构建 command 模式的和 saga 模式。在复杂的业务场景中真的很好用并且目前开源社区没有比较好的解决方案。主要是 saga 和 command 要求类似事件触发的方式进行解耦。
    zustand 确实简化了 redux ,但失去了类事件触发的机制,扩展性降低了很多。
    不过大部分 Web 应用应该不会有这么复杂的前端业务,redux 对他们来说确实过于复杂。
    DeWjjj
        20
    DeWjjj  
       2024-07-13 18:37:32 +08:00
    jotai 就行了。
    enchilada2020
        21
    enchilada2020  
       2024-07-13 19:00:39 +08:00 via Android
    @lee88688 事件触发器 saga 和 command 能再详细说说吗 没太理解 最好能有例子或者相关文章之类的
    Jeremial
        22
    Jeremial  
       2024-07-13 19:00:41 +08:00
    之前我们 react 项目里禁止使用 redux
    从一开始就感觉这个很不好用,页面没复杂到一定程序,useState, useContext 那一套完全够用了。

    现在回过头来看,当时的决定也算是挺正确的
    skyworker
        23
    skyworker  
       2024-07-13 19:09:45 +08:00   ❤️ 2
    @ZoBoat 我们自己的内部项目. 2.0 版本引入 redux, 后来 3.0 版本, 大家一致同意把这个玩意从代码中全部删除, 再也不用这玩意了

    比如状态关联, 很多项目中大部分状态关联都是 crud, 可能有一小部分全局状态关联稍微复杂点, 需要 redux.

    但是引入 redux 的后果就是, 为了解决"1%的复杂状态管理", 导致其他本来很简单的"99%"的代码, 都变得复杂无比.

    更烦人的是(可能我们用的版本不对或者 dva 的问题), 只要修改 redux 的 model, npm 的热加载无效, 必须重新跑一次 npm start 才行, 有点类似 java 中, 改了个 model, 整个一堆微服务都要重启的感觉, 这就太浪费时间了. 后端我都嫌 java 麻烦, 再搞一套更麻烦的前端吗?
    BeiChuanAlex
        24
    BeiChuanAlex  
       2024-07-13 19:09:52 +08:00
    @lee88688 #19 同意,redux 有使用的场景,具体看业务需求,而不是为了用而用。
    IvanLi127
        25
    IvanLi127  
       2024-07-13 20:02:54 +08:00
    大概是盖屎山的时候吧。目前只遇到了 umijs,里面的 dva 基于 redux ,难受加倍。现在方案很多,没满十岁的项目应该都有更优秀的状态管理方案。
    chf007
        26
    chf007  
       2024-07-13 21:17:13 +08:00
    都什么年代了
    wpzz
        27
    wpzz  
       2024-07-13 21:52:39 +08:00
    在多次交接后,代码难度呈现"指数级"膨胀。

    因为每个团队的代码规范,技术能力,写好 redux 需要很好的代码能力。

    推荐 「 zustand 」 和 「 mobx 」(新版| hooks 版,老版| class 也是一坨)
    lee88688
        28
    lee88688  
       2024-07-13 23:55:52 +08:00   ❤️ 1
    @enchilada2020 saga 可以看看 redux-saga 的文档,还有他遵循的 saga 思想(有一篇论文)。command 看一下 Command pattern 。
    eachann
        29
    eachann  
       2024-07-14 00:05:25 +08:00
    还是 zustand 把,我从 vue 过来,稍微过了一下 redux 文档,感觉比 react 还难
    anoninz
        30
    anoninz  
       2024-07-14 00:52:57 +08:00
    只有接手老项目的时候用 redux 。

    如果想用强类型的全局状态管理试试 mobx-state-tree
    IamJ
        31
    IamJ  
       2024-07-14 01:31:55 +08:00
    zustand 或者 jotai
    magicdawn
        32
    magicdawn  
       2024-07-14 04:55:07 +08:00 via iPhone
    valtio
    Amose2024
        33
    Amose2024  
       2024-07-14 05:14:42 +08:00
    我一直在用 Redux 啊,页面传参给某个弹出框的 component 的时候,用它感觉挺舒服呢。还有就是分页查询的时候,用它存 lastKey 。不然还真不知道能用啥啊
    Amose2024
        34
    Amose2024  
       2024-07-14 05:16:31 +08:00
    如果 Redux 没有用的话,Vue 的 Pinia 也一样?
    liximomo
        35
    liximomo  
       2024-07-14 08:05:03 +08:00
    什么情况下都不用,一直在用 [doura]( https://github.com/dourajs/doura)
    roundRobin
        36
    roundRobin  
       2024-07-14 08:38:12 +08:00
    用过一次,果断劝退了
    no13bus
        37
    no13bus  
       2024-07-14 09:14:25 +08:00
    @Amose2024 正常传参就行了吧。这个需要用 redux 吗
    Vogan
        38
    Vogan  
       2024-07-14 09:36:08 +08:00
    redux 不算过度封装。但属于设计哲学大于实际编码场景,流程、概念一个不能少把你限制地死死的。让开发者觉得用上 redux 就是带着手铐开发。
    simo
        39
    simo  
       2024-07-14 09:56:57 +08:00
    react 啊,20 年左右的项目了,当时给前端团队定的 mobx ,觉得 redux 太啰嗦了。
    现在不知道 react 项目架构怎么选型,好几年没用过 react 。
    w4ngzhen
        40
    w4ngzhen  
       2024-07-14 10:56:04 +08:00
    个人的理解,redux 不适合业务项目,适合一些底层框架使用。举个例子,比如做一个某些领域的低代码底层,使用 redux 可以很好的控制低开中的数据流。
    lstz
        41
    lstz  
       2024-07-14 11:15:12 +08:00
    不爱用 redux 大概率还停留在对老版本的 stereotype 里,最新版本的 redux 配合上 redux-toolkit+hook 已经非常好用了

    我确实挺讨厌以前的 redux ,模板化代码太多,但最近一年重新试了一些 redux ,变化很大,整体感观用起来也非常不错
    wu67
        42
    wu67  
       2024-07-14 11:44:15 +08:00 via Android
    试试 jotai
    l4ever
        43
    l4ever  
       2024-07-14 16:24:04 +08:00
    react18 自己撸一个
    mark2025
        44
    mark2025  
       2024-07-14 17:29:26 +08:00
    Redux 纯属给自己找麻烦,还不如用 rxjs 呢
    zbowen66
        45
    zbowen66  
       2024-07-14 21:10:36 +08:00
    @ZoBoat #16 Context + Jutai 足够
    wiluxy
        46
    wiluxy  
       2024-07-14 21:56:57 +08:00
    jotai\zustand\valtio 三选一就可以了
    sjhhjx0122
        47
    sjhhjx0122  
       2024-07-15 08:55:46 +08:00
    要不就直接 Context,要不就 zustand,打死也不会用 redux
    shunia
        48
    shunia  
       2024-07-15 09:52:00 +08:00
    全局状态用 context 不就行了?我记得官方文档里就教了大家怎么用 context+useReducer 做一个基础的优化的全局状态管理吧?
    zustand 或者 jotai 之类的也就那样,为了实现跨库的特性导致写法很丑,而且心智思维没有 react 本身简单,在没有必要的情况下,不建议引入这些额外的库来做状态管理。尤其是使用 TypeScript 的前提下还要增加额外的成本,简简单单 context 一把梭就足够了。

    如果你是在做性能吃紧的产品,那直接别用 react ,原生的 html+class 写起来也不复杂,用起来更是简单。
    CodingNaux
        49
    CodingNaux  
       2024-07-15 13:10:38 +08:00
    简单的 API 数据共享:swr
    简单页面级数据共享:context + useContext
    复杂页面级数据共享:zustand
    CodingNaux
        50
    CodingNaux  
       2024-07-15 13:12:15 +08:00
    API 数据共享:swr
    2I0Mto2kjm0c0B9i
        51
    2I0Mto2kjm0c0B9i  
       2024-07-15 13:56:22 +08:00
    zustand 用了几年了,无比好用
    daolanfler
        52
    daolanfler  
       2024-07-15 14:46:34 +08:00
    https://imgur.com/jBhX5Rc

    zustand 比 useContext 好在更细粒度的控制渲染
    gogozs
        53
    gogozs  
       2024-07-16 09:10:10 +08:00
    用 redux 你得接受它的理念,按照它的想法写一大坨代码
    ZoBoat
        54
    ZoBoat  
    OP
       2024-07-16 10:26:05 +08:00
    评论区有多少用的是 Redux toolkit
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5307 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:19 · PVG 16:19 · LAX 01:19 · JFK 04:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.