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

大家对 react 的看法?

  •  
  •   yocoso · 84 天前 · 3705 次点击
    这是一个创建于 84 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

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

    18 条回复  ?  2024-04-30 09:24:56 +08:00
    yanggggjie
        1
    yanggggjie  
       84 天前   ?? 1
    因为不该用 redux 了,上 zustand 吧
    GeekGao
        2
    GeekGao  
       84 天前   ?? 1
    或许你可以尝试一下利用 Jotai 管理状态 ,我觉得很好用
    gouflv
        3
    gouflv  
       84 天前 via iPhone   ?? 1
    你好,react 是这样的
    Perry
        4
    Perry  
       84 天前 via iPhone
    你 state management 有写 unit tests 么?感觉用 redux 有 test coverage 和没有是两种不同的感觉。你用了 toolkit 至少 type 上容易了很多了,以前只用 redux 的时候 typing 还需要很多 boilerplate 去 setup 。
    charlie21
        5
    charlie21  
       84 天前 via Android
    redux 的部分,请理解 flux 和单向数据流 不可变数据的好处

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

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

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

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

    我的 app 规模都不大
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1171 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:58 · PVG 06:58 · LAX 15:58 · JFK 18:58
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com