对 React 印象停留在 2 年前,准备深入一下,向各位请教一下生态 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
johnkiller
V2EX    React

对 React 印象停留在 2 年前,准备深入一下,向各位请教一下生态

  •  2
     
  •   johnkiller 2021-09-22 9:33:53 +08:00 6003 次点击
    这是一个创建于 1568 天前的主题,其中的信息可能已经有所发展或是发生改变。

    那个时候看的教程一般全都是 class component,状态管理必是 redux,后来重心还是切换到 Vue 去了。

    现在想重学一遍,但对一些教程比较疑惑,写法可能已经过时,又或者过于 beta 。

    所以来这里请教下各位,2021 年,react 的最佳实践。

    1. 现在是 hooks 的天下了吗? 2. 主流用哪些配套生态呢? 
    26 条回复    2021-10-28 09:37:12 +08:00
    NSLoger
        1
    NSLoger  
       2021-09-22 09:37:59 +08:00   1
    React 写过一丢丢,目前主攻 RN,新业务主要基本上都是以 functional component 为主,hooks 用起来确实很爽,但是要写出正确的 hooks 的写法需要大量的代码的洗礼。
    theohateonion
        2
    theohateonion  
       2021-09-22 09:39:50 +08:00   1
    1. 主流确实是 hooks,新组件推荐全部用 Functional Component 实现就好了。
    2. 配套生态倒是没有太多变化,redux 也不是不能用,react-router 依旧是主流 router 。新出的一些状态管理库比如 recoil 之类的看兴趣选取即可,应用规模没有大到一定程度的背景下都能用,没差
    3. 非常建议把官方的一些 hooks 好好学习一下,非常关键。
    4BVL25L90W260T9U
        3
    4BVL25L90W260T9U  
       2021-09-22 09:40:12 +08:00   2
    确实是 hooks 的天下了。状态管理耦合着数据请求用 redux 太嗦了,我现在用 swr + useReducer 就很好。
    theohateonion
        4
    theohateonion  
       2021-09-22 09:40:42 +08:00   1
    补充一句,99%说 hooks 坑的,写的有心智负担的都是没有好好读官方文档的
    Augi
        5
    Augi  
       2021-09-22 09:45:02 +08:00 via iPhone   1
    hooks 很好,但是你要学会怎么写,不要带着 Class 时期的那套思想就好了
    yaojin
        6
    yaojin  
       2021-09-22 09:47:20 +08:00   1
    可以了解下 react-query, dva redux 不好用,但是国内还是主流
    magichacker
        7
    magichacker  
       2021-09-22 09:57:28 +08:00
    我们现在是 all in hooks 和 Mobx
    magichacker
        8
    magichacker  
       2021-09-22 09:57:49 +08:00   1
    Mobx 让你像写 Vue 一样写 React
    murmur
        9
    murmur  
       2021-09-22 09:58:39 +08:00   1
    一般的项目你应该相信框架,很多时候生命周期就相当于 document.ready,都堆那一起去了

    class 也挺好的,hooks 啥都要考虑变量变化是累

    我们第一个项目,好像 react15 写的,一个 shouldComponentXXX 的优化都没写
    TomVista
        10
    TomVista  
       2021-09-22 10:03:39 +08:00   1
    hooks 不是必需品,如果项目里没有 逻辑复用 ,完全可以不用.
    ipwx
        11
    ipwx  
       2021-09-22 10:19:54 +08:00
    我是用 Vue 的。但是看了 React hooks 我觉得,好像还挺好用,有一种迁移的冲动。

    后来发现 Vue 3 的 hooks 更好用就决定等了。
    robinlovemaggie
        12
    robinlovemaggie  
       2021-09-22 10:33:02 +08:00
    @magichacker #7 hooks /mobx +1
    alalida
        13
    alalida  
       2021-09-22 12:30:38 +08:00
    @ospider 用了 grahpql,直接把状态管理器扔了,开发效率搞得不行,typescript 支持也很好。swr 没用过,看起来和 graphql 在 react 中的用法差不多。

    不明白的是 useReduer,我没搞懂这个 hook 的使用场景。
    alalida
        14
    alalida  
       2021-09-22 12:39:58 +08:00
    @alalida 高得不行,打错了
    SolidZORO
        15
    SolidZORO  
       2021-09-22 12:41:54 +08:00 via iPhone   1
    react-query 配合 axios 完成 99% 的状态管理,还有复杂的(指父子子孙孙嵌套组件),全局的会用 mobx 完成最后 1%。

    另外 hooks 的确有负担,而且不小,我有个项目自己写了 500+ hooks 组件但不敢说自己会用了。主要是黑魔法太多比如用 useRef 全局存状态什么的,要是写不好,组件会出现非常多没必要的 reRender 。

    读官方 hooks 文档用处不是太大,随便看看就行,官方自己也承认没写好目前在重写中,主要还是多写多踩坑吧,写够一定数量的 hooks,就自然学会了。
    gouflv
        16
    gouflv  
       2021-09-22 13:00:35 +08:00 via iPhone
    hooks + provider 解决大部分数据共享,参考 constate
    pddwin
        17
    pddwin  
       2021-09-22 13:42:28 +08:00
    没人用 umi 的吗
    kohoh
        18
    kohoh  
       2021-09-22 13:49:28 +08:00
    @pddwin 我用 umi
    4BVL25L90W260T9U
        19
    4BVL25L90W260T9U  
       2021-09-22 14:12:33 +08:00
    @alalida 前端总还是有一些状态的,比如侧边栏是否打开。这时候还是得用个全局的状态存储,内置的 Context + useReducer 就可以实现。
    Leviathann
        20
    Leviathann  
       2021-09-22 14:21:18 +08:00 via iPhone
    @SolidZORO useRef 感觉跟 class 组件的实例变量差不多
    只是一个是 class,天然的可以管理实例变量, 而函数组件需要 react 帮你管理
    4196
        21
    4196  
       2021-09-22 15:38:43 +08:00
    个人学习体验

    hooks 的心智负担比 vue3 大,官方文档例子太简单,看完还是缩手缩脚的写项目

    对于有洁癖的,会对函数组件重复渲染比较难受,老想找到是哪里导致的

    函数组件和 class 组件两种范式非要混着用心里很不舒服
    Saurichthys
        22
    Saurichthys  
       2021-09-22 15:41:37 +08:00
    @magichacker
    Mobx 让你像写 Vue 一样写 React?
    那为啥不直接写 vue
    OliveGlaze
        23
    OliveGlaze  
       2021-09-22 18:01:41 +08:00   1
    Hooks + Akita 一票
    fernandoxu
        24
    fernandoxu  
       2021-09-23 17:04:07 +08:00
    react 非常保值,除了新增了 Hooks 其它都不过时,redux 结合官方的 redux-toolkit 也很好用了
    hive
        25
    hive  
       2021-10-09 09:43:41 +08:00
    @SolidZORO #14 不推荐 Axios (直接用 fetch 吧,最近版本的 transform 还出了 bug 修了好久

    状态库的话,Redux 和 MobX 都不流行了,现在流行 Recoil 、Jotai,写就完事了,无所谓踩坑与否
    Shensven
        26
    Shensven  
       2021-10-28 09:37:12 +08:00
    2021 下半年,React Hook 的最佳实践,欢迎来撩
    https://github.com/shensven/Readhubn
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     973 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 52ms UTC 21:59 PVG 05:59 LAX 13:59 JFK 16:59
    Do have faith in what you're doing.
    ubao msn 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