react,vue移动端,手机端长按事件

这里以react为例,vue差不多

render中随意定义一个

<div className={styles.commodity} key={index2} onTouchStart={this.start} onTouchMove={this.move} onTouchEnd={this.end}>

constructor(props) {
    super(props);
    this.state = {
      checkAll: false,
      longClick:0,  // 长按标志
      timeOutEvent: 0,  // 计时器
    };
  }
  start= ()=>{
    console.log("----start----")
    this.setState({timeOutEvent : setTimeout(()=>{
        this.setState({longClick : 1});  //  长按标志位
        // 此处为长按事件
        console.log("长按事件")
    },1500)})
  }

  move=(e)=>{
    console.log("----move----",this.state.timeOutEvent,this.state.longClick)
    clearTimeout(this.state.timeOutEvent)
    this.setState({longClick : 0});  // 清除标志位
    e.preventDefault();  // 阻止其他点击事件
  }
  end=(e)=>{
    clearTimeout(this.state.timeOutEvent)
    this.setState({longClick : 0});  // 清除标志位
    console.log("----end----",this.state.timeOutEvent,this.state.longClick)

    if(this.state.timeOutEvent !=0 && this.state.longClick==0){  // 判断是否非长按事件
         //此处为点击事件
        console.log('点击事件')
     }
     return false;
    }