onClick vs onTouchTap,我应该使用什么?

onClick vs onTouchTap, what should I use?

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

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

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

CHANGELOG for Material-UI v0.19.0, the react-tap-event-plugin dependency has been removed from versions 0.19.0+ of Material-UI. As noted here 可以看出,这样做是为了支持 React v16 (a.k.a., "Fiber" ).此外,从那时起,移动设备的浏览器有了显着改进,这意味着幻影点击效果(至少在许多情况下)不再明显或不存在。

总体而言,评估您的堆栈。如果您只考虑使用常绿浏览器进行构建,那么已经升级到 React v16 并且处于 recent version of Material-UI, use of onTouchTap instead of onClick is likely not for you. Additionally, Facebook (in particular, its React team) does not plan on supporting tap events 并且这似乎也不会成为未来主流浏览器的长期问题;在这种情况下,如果您的应用程序有能力升级其基础架构(,核心依赖项)它应该。