onClick vs onTouchTap,我该怎么用?

时间:2017-05-09 20:18:32

标签: material-ui

在onClick和onTouchTap之间我应该使用什么?为什么? onTouchTap似乎有时太容易触发(例如滚动时)。我错了吗 ? 是否有任何浏览器问题?

2 个答案:

答案 0 :(得分:8)

看起来onTouchTapreact-tap-event-plugin提供的一种方法,可以克服iOS上onClick处理程序发生的300毫秒延迟。如果您不关心iOS浏览器上的300毫秒延迟,那么使用常规onClick处理程序可能是有意义的,以避免此插件的文档中提到的可能的鬼点击。

答案 1 :(得分:7)

尽管Ianan's answer可能反映了撰写本文时的最佳行动方案,但其他人在2017年8月中旬之后访问此帖子时应该警惕有一些更新。根据您需要支持的浏览器以及应用程序中的依赖项,onTouchTap可能不再与您的需求相关。

从Material {UI v0.19.0的CHANGELOG可以看出,react-tap-event-plugin依赖关系已从Material-UI的0.19.0+版本中删除。如上所述here,这是为了支持React v16( a.k.a。,“Fiber”)。此外,移动设备的浏览器从那时起已经有了显着的改进,这意味着鬼点击效果(至少在许多情况下)不再明显或存在。

总的来说,评估你的筹码。如果您只是考虑使用常绿浏览器,已升级到React v16并且位于recent version of Material-UI,则使用onTouchTap代替onClick可能不适合您。此外,Facebook(特别是其React团队)does not plan on supporting tap events似乎也不会成为主流浏览器的长期问题;在这种情况下,如果您的应用程序能够负担升级其基础设施(,核心依赖关系),它应该。