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

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

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

    我感觉 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
    没用过,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 的处理不太好。
    PainAndLove
        17
    PainAndLove  
       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   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2890 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:27 · PVG 19:27 · LAX 04:27 · JFK 07:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.