javascript - onDoubleClick() 不适用于手机反应 js 应用程序
问题描述
对每个人来说,我的 ReactJs 应用程序中存在分配给组件的 onDoubleClick() 函数的问题,在台式机上我的功能正常工作,但在 Android 手机上,(iPhone 工作正常)屏幕垂直不起作用,我手机中的屏幕无法将双击识别为我分配的功能,而是放大或缩小,我想用我的功能防止这种行为。
以下是我的代码的一部分,您可以在estebmaister.github.io/react-calendar/或同名的公共 repo 中看到该应用程序。
onDoubleClick = (event) => {
this.setState({
popperAnchor: Boolean(this.popperAnchor) ? null : event.currentTarget,
});
};
render() {
return (
<td
key={"d" + this.props.day}
className={`calendar-day ${this.props.currentDay}`}
onDoubleClick={this.onDoubleClick}
>
希望各位大神指点一下解决这个问题,谢谢。
解决方案
此解决方案适用于使用函数而不是类声明组件时:
....some code...
const [waitingClick, setWaitingClick] =
useState(null);
const [lastClick, setLastClick] = useState(0);
const processClick = (e) => {
if(lastClick&&e.timeStamp - lastClick < 250 &&
waitingClick){
setLastClick(0);
clearTimeout(waitingClick);
setWaitingClick(null);
console.log('double click')}
else{
setLastClick(e.timeStamp);
setWaitingClick(setTimeout(()=>{
setWaitingClick(null);
}, 251))
console.log('single click')
}
}
....some code...
<component onClick={(e)=>processClick(e)}></>
推荐阅读
- node.js - Firebase-admin nodejs SDK 无法连接
- c# - 使用 C# HttpClient 时收到 HTTP 500 响应
- excel - 如何在excel中为矩阵形式计算不同的值
- anglesharp - 我如何解析 document.write/response.write 以对 AngleSharp 使用单引号而不是双引号?
- sql-server - Apache 授权使用 SQL Server 数据库中的要求 dbd-group
- c# - 单击 NavigationViewPaneDisplayMode 时启用一键而不是双击
- kotlin - 如何在 Kotlin 的类中解决 getter
- python-packaging - 诗歌:如何发布针对多个 Python 版本的项目包?
- docker - Docker 容器无法连接到我知道正在运行的另一个容器
- android - 如何将空图像添加到 RecyclerView