我一直在尝试使用React中的Hammerjs来测试和模拟触摸事件,但是浏览器和事件之间的行为极不一致。
我们来看一下简单的代码:
import React from 'react';
import PropTypes from 'prop-types';
import Hammer from 'hammerjs';
import touchEmulator from 'hammer-touchemulator';
function testTap() {
console.log('test zoom');
}
function testPinch() {
console.log('test pinch');
}
class PDF extends React.Component {
constructor(props) {
super(props);
touchEmulator();
...
}
componentDidMount() {
this.hammer = Hammer(this.canvas);
this.hammer.on('tap', testTap);
this.hammer.get('pinch').set({ enable: true });
this.hammer.on('pinch', testPinch);
}
...
render() {
return (
<div>
<canvas
ref={(canvas) => { this.canvas = canvas; }}
/>
</div>
);
}
}
我添加了触摸仿真器,因此我可以测试捏缩放。
所以这是我的问题:
有没有人有任何想法?
有类似的问题,所以刷卡切换到react-swipeable
,但react-hammerjs
留下了水龙头。此外,在搜索解决方案时看到有人提到的一篇文章,自React 16.4以来某些功能被禁用,您可以尝试降级React版本,然后检查它是否是这种情况。