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

想不通, React 现代框架的设计者,为什么内置的 onClick 不默认防抖?

  •  
  •   chengguang · 4 小时 43 分钟前 · 2168 次点击

    如题,防抖不是刚需吗?为啥不默认融入到 onClick 中,或者通过入参控制不行吗? 开发中每个都加防抖,麻烦死了!!!!

    26 条回复    2026-01-14 15:37:22 +08:00
    shakaraka
        1
    shakaraka  
    PRO
       4 小时 40 分钟前
    😅
    summerwar
        2
    summerwar  
       4 小时 37 分钟前
    因为原生的 click 就不防抖
    craftsmanship
        3
    craftsmanship  
       4 小时 36 分钟前 via Android
    你都用 react 了 不知道找个相关库用一下吗
    shaozelin030405
        4
    shaozelin030405  
       4 小时 35 分钟前   ❤️ 2
    ...不是刚需
    wangtian2020
        5
    wangtian2020  
       4 小时 33 分钟前
    你觉得组件库不合理可以自己去提 issue 提 pr ,我上个月就提了个 issue 解决一个防抖
    iOCZS
        6
    iOCZS  
       4 小时 26 分钟前   ❤️ 1
    没有网络请求需要啥防抖。。。
    zombiej
        7
    zombiej  
       4 小时 21 分钟前   ❤️ 1
    做不做的答案其实很简单,就是你进行调整后,开发者是否还能还原原来的功能以及是否有必要。

    比如说 onClick 防抖,那在不防抖的场景里(比如抢票、短时间点击抢积分等等)开发者就需要绕非常大的一圈来实现支持多点击效果。

    那是不是可以加一个属性来支持配置?那就看你的库是否贴近底层,越近越受限制,越远越自由。一个 onClick 防抖需要在 Fiber 节点里存储最近点击数据(我们暂时不提 Fiber 本身是一个抽象节点,本来就不应该关心这件事),那对于大量不处理点击事件的节点都是没有意义的数据,但是因为冒泡以及可以存在动态调整 props 来支持 onClick ,导致框架层必须要预存数据。对于性能与内存都是没有必要的。
    phkvae
        8
    phkvae  
       4 小时 19 分钟前   ❤️ 3
    这就是你和框架设计者的区别,你看到的只是你的业务问题,框架解决的是更高层面的问题
    shintendo
        9
    shintendo  
       4 小时 18 分钟前
    React 的哲学就是手动挡
    phkvae
        10
    phkvae  
       4 小时 17 分钟前   ❤️ 1
    开发中每个加防抖 你应该想的是去封装一个组件 或者写一个 hooks 是来解决 而不是每个都去加
    NerbraskaGuy
        11
    NerbraskaGuy  
       4 小时 15 分钟前   ❤️ 1
    每个点击单独加防抖那你也是蛮拼的,封装一个通用防抖函数都比来这发帖吐槽更快
    canteon
        12
    canteon  
       4 小时 9 分钟前   ❤️ 3
    在你想要的位置加个看不见的遮罩,还抖什么抖。 看见防抖俩字都想吐,抖了个🔨
    HojiOShi
        13
    HojiOShi  
       4 小时 6 分钟前   ❤️ 11
    如果不是为了赚币,我觉得只有会流口水的所谓开发才能问得出这个问题。
    chenliangngng
        14
    chenliangngng  
       3 小时 49 分钟前
    比如我要做个连点器或者计数器怎么办

    防抖功能完全可以通过引用第三方包或者手动实现,通过高阶函数传参控制
    nszbf
        15
    nszbf  
       3 小时 48 分钟前
    =.=,多小白问出这样的问题
    newaccount
        16
    newaccount  
       3 小时 5 分钟前   ❤️ 1
    老哥,前端不适合你,去做后端吧
    后端就简单多了
    来~
    这是个 apple~
    这是个 pen~
    PIA!
    banana pie!
    leokun
        17
    leokun  
       2 小时 55 分钟前
    @HojiOShi 你说的不是这个吧
    moooooooo
        18
    moooooooo  
       2 小时 41 分钟前
    😅
    yhxx
        19
    yhxx  
       2 小时 19 分钟前   ❤️ 1
    设计模式第一大原则:单一职责
    zhengfan2016
        20
    zhengfan2016  
       2 小时 14 分钟前
    vue 都没有这种功能
    molvqingtai
        21
    molvqingtai  
       2 小时 7 分钟前
    防抖了
    还要不要双击选中文本?
    还要不要事件冒泡?
    如果不要冒泡导致全局事件埋点失效怎么处理?
    如果需要冒泡怎么既可以让事件冒泡又能实现防抖效果?
    防抖有那么多配置项,防抖延时是前置还是后置?
    既然都有防抖了要不要支持节流?

    你觉得只是加个防抖,在框架作者看来需要处理一堆问题
    MindMindMax
        22
    MindMindMax  
       1 小时 32 分钟前
    防抖策略呢? 怎么抽象出相关的参数? 会不会增加使用难度?
    wogogoing
        23
    wogogoing  
    PRO
       1 小时 28 分钟前
    框架设计需要考虑普遍的通用性,“防抖”可以说是业务层面的事情。

    如果框架连这些内容都要事无巨细的处理,那么会背上沉重的技术债,而且也会丢失通用性。
    ramcasky
        24
    ramcasky  
       1 小时 28 分钟前
    不要只站在自己的角度上去想
    worker201
        25
    worker201  
       1 小时 16 分钟前
    声明一下,lz 是个特例,并不是所有前端都这么纯
    frankies
        26
    frankies  
       1 分钟前
    看来前端娱乐圈真的不是个笑话
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5591 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:38 · PVG 15:38 · LAX 23:38 · JFK 02:38
    ♥ Do have faith in what you're doing.