大家写 React 项目都用 React hooks 吗,为啥我感觉没有 class 的方式好用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
cl903254852
V2EX    程序员

大家写 React 项目都用 React hooks 吗,为啥我感觉没有 class 的方式好用

  •  
  •   cl903254852 2019-12-18 14:53:26 +08:00 6708 次点击
    这是一个创建于 2179 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我感觉 React hooks 更适合颗粒度小的组件, 我本人更喜欢使用 class 的方式写组件

    33 条回复    2019-12-19 20:15:54 +08:00
    qinfensky
        1
    qinfensky  
       2019-12-18 14:57:15 +08:00 via iPhone   1
    没用过,RxJS 对我而言目前能解决大多数场景
    liuy1994g
        2
    liuy1994g  
       2019-12-18 14:58:54 +08:00 via Android
    本来就是两种场景,习惯用哪种就用哪种算了
    kitebear
        3
    kitebear  
       2019-12-18 14:58:57 +08:00
    如果是简单的组件的话可以用 react hooks,如果是复杂的话用 class,都一样不需要用 react hooks 专门装*的
    onfuns
        4
    onfuns  
       2019-12-18 15:11:29 +08:00
    hooks 爽,做性能优化写的代码要少很多。
    azcvcza
        5
    azcvcza  
       2019-12-18 15:53:51 +08:00
    生命周期的一大问题是,相同操作一大堆的时候没法优化
    yuankui
        6
    yuankui  
       2019-12-18 16:15:10 +08:00
    @qinfensky RxJS 用来解决什么问题的?
    newbieRenew
        7
    newbieRenew  
       2019-12-18 16:27:48 +08:00 via iPhone
    全部用 hook 了,比 class 短小精悍。
    tyrealgray
        8
    tyrealgray  
       2019-12-18 16:39:01 +08:00 via Android
    Hooks 方便很多
    baxtergu
        9
    baxtergu  
       2019-12-18 16:55:02 +08:00
    Hooks 可以把散落在各个生命周期里的代码整合起来
    duan602728596
        10
    duan602728596  
       2019-12-18 17:35:03 +08:00 via iPhone
    hook 更好,解决了数据生命周期的烦恼,精简了代码,开发写的飞快
    peterjose
        11
    peterjose  
       2019-12-18 17:53:05 +08:00
    最大区别就是函数式吧 前端趋势 不过看个人口味 没有绝对
    54sword
        12
    54sword  
       2019-12-18 17:56:48 +08:00   4
    fanfou
        13
    fanfou  
       2019-12-18 18:08:48 +08:00
    hook 解决了组件逻辑复用问题。
    hezhiming1993
        14
    hezhiming1993  
       2019-12-18 18:31:05 +08:00 via Android
    @fanfou 如何理解
    blessyou
        15
    blessyou  
       2019-12-18 18:43:18 +08:00 via Android
    我就喜欢函数
    hyyou2010
        16
    hyyou2010  
       2019-12-18 19:01:15 +08:00
    刚开始不习惯,后来都用 hooks 了。优点的话,印象中,setState 时会考虑 immutable 什么的,现在不用了。另外不用思考那些钩子函数了。但现在并不很全面,有个 previous state 的处理不太好。
    Lanayaaa
        17
    Lanayaaa  
       2019-12-18 19:07:15 +08:00
    @qinfensky 可否给个 例子? 想学习下。
    walpurgis
        18
    walpurgis  
       2019-12-18 19:47:02 +08:00
    react 换纯函数 hooks 是趋势,个人体验下来挺好的,喜欢生命周期函数可以换 vue
    ljpCN
        19
    ljpCN  
       2019-12-18 19:51:15 +08:00
    个人用到的一小部分来讲,hooks 让我最爽的在于 useEffect,有了 useEffect 我不用在各种点击事件的回调里写一堆处理了,尤其是很多重复的处理。我只需要在回调里改动一个 state,然后用 useEffect 去对 state 的变化监听。useEffect 也使得我的包含复杂状态的组件哪些事件对应哪些操作变得清晰起来。
    zhuzhibin
        20
    zhuzhibin  
       2019-12-18 20:35:00 +08:00 via iPhone
    下午刚看文档 准备用上了
    dartabe
        21
    dartabe  
       2019-12-18 20:46:31 +08:00
    切到 hook 暂时还没发现问题 react 全员函数式了 挺好的
    cl903254852
        22
    cl903254852  
    OP
       2019-12-18 21:00:20 +08:00
    @duan602728596 但遇到稍微复杂点的组件,使用 useEffect 并没有使用声明周期函数来的直观,更容易理解和维护。
    所以我就认为 hooks 更适合小而简单的组件,复杂点的组件走 class 更好
    qinfensky
        23
    qinfensky  
       2019-12-18 21:26:24 +08:00
    @yuankui @PainAndLove RxJS 在很多异步场景都非常实用,Rx 是很棒的思想,有着多语言的实现,例如 RxSwift、RxJava 等等,https://rxjs.dev/
    shuhao
        24
    shuhao  
       2019-12-18 22:25:49 +08:00 via Android
    用 Hooks 就不用写烦人的 this 了
    yilingersier
        25
    yilingersier  
       2019-12-18 22:52:37 +08:00
    Hook 赛高,除了 SSR 真没办法,其他的生命周期问题基本上 useEffect 暂时都能解决。不写 class 一时爽,一直不写一直爽
    ericgui
        26
    ericgui  
       2019-12-19 07:49:56 +08:00
    我组长傻逼一个,一会儿用 class,一会儿用 function
    April5
        27
    April5  
       2019-12-19 08:36:09 +08:00
    react hook 需要摒弃以前用 class 的思想去写代码
    hook 用熟了,class 一套就只维护旧项目好了
    Torpedo
        28
    Torpedo  
       2019-12-19 10:04:17 +08:00
    hook 明显好用很多。只是有些坑需要注意
    OSF2E
        29
    OSF2E  
       2019-12-19 11:25:06 +08:00
    可能你的关注点在于“良好的开发体验”上吧……如果把关注点提升为把控完整的开发流程……你会发现 hook 更优秀……

    类比一下,你目前关心相当于是“茴”字的几种写法,而不是如何用汉字创作一篇完整的文章……如果觉得类比的不恰当请勿责怪
    rodjl
        30
    rodjl  
       2019-12-19 12:26:20 +08:00 via iPhone
    hook 主要小心 stale closure 的问题
    royzxq
        31
    royzxq  
       2019-12-19 12:27:11 +08:00
    hooks 和 class 一起用的现在瑟瑟发抖
    CodingNaux
        32
    CodingNaux  
       2019-12-19 18:01:26 +08:00
    @qinfensky rxjs 怎么和 react 结合的,感觉学习成本高啊,项目也没那么复杂
    qinfensky
        33
    qinfensky  
       2019-12-19 20:15:54 +08:00 via iPhone
    @CodingNaux Rx 系列有句哲学“如果你觉得你不需要它,那就不需要”
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1228 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 17:31 PVG 01:31 LAX 09:31 JFK 12:31
    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