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

大家对 react 的看法?

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

    我用 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  
       288 天前   ❤️ 1
    因为不该用 redux 了,上 zustand 吧
    GeekGao
        2
    GeekGao  
       288 天前   ❤️ 1
    或许你可以尝试一下利用 Jotai 管理状态 ,我觉得很好用
    gouflv
        3
    gouflv  
       288 天前 via iPhone   ❤️ 1
    你好,react 是这样的
    Perry
        4
    Perry  
       288 天前 via iPhone
    你 state management 有写 unit tests 么?感觉用 redux 有 test coverage 和没有是两种不同的感觉。你用了 toolkit 至少 type 上容易了很多了,以前只用 redux 的时候 typing 还需要很多 boilerplate 去 setup 。
    charlie21
        5
    charlie21  
       288 天前 via Android
    redux 的部分,请理解 flux 和单向数据流 不可变数据的好处

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

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

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

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

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