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

1 月 14 日
 chengguang

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

5944 次点击
所在节点    React
40 条回复
shakaraka
1 月 14 日
😅
summerwar
1 月 14 日
因为原生的 click 就不防抖
craftsmanship
1 月 14 日
你都用 react 了 不知道找个相关库用一下吗
shaozelin030405
1 月 14 日
...不是刚需
wangtian2020
1 月 14 日
你觉得组件库不合理可以自己去提 issue 提 pr ,我上个月就提了个 issue 解决一个防抖
iOCZS
1 月 14 日
没有网络请求需要啥防抖。。。
zombiej
1 月 14 日
做不做的答案其实很简单,就是你进行调整后,开发者是否还能还原原来的功能以及是否有必要。

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

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

防抖功能完全可以通过引用第三方包或者手动实现,通过高阶函数传参控制
nszbf
1 月 14 日
=.=,多小白问出这样的问题
newaccount
1 月 14 日
老哥,前端不适合你,去做后端吧
后端就简单多了
来~
这是个 apple~
这是个 pen~
PIA!
banana pie!
leokun
1 月 14 日
@HojiOShi 你说的不是这个吧
moooooooo
1 月 14 日
😅
yhxx
1 月 14 日
设计模式第一大原则:单一职责
zhengfan2016
1 月 14 日
vue 都没有这种功能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1185480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX