react中使用react-draggable实现拖拽,并解决在移动设备中使用拖拽后点击事件无效

1.通过npm安装react-draggable

npm  i react-draggable

2.引入react-draggable

import Draggable from 'react-draggable'

3.例如我们需要生成心愿卡片并且利用组件Draggable实现心愿卡片的拖拽

 <div className="wish-cards" >

       {wishCards.map((card, index) => (

         <Draggable key={card.id} defaultPosition={card.position} >

           <div key={index} className="wish-card not-drageble" >

          //生成的心愿卡片为背景图片

           <div className="image-container" style={{ backgroundImage: `url(${card.image})`,width:'100px',height:'100px',backgroundSize:'contain',marginTop:'10px' }} >

             <span>{card.wish}</span>

             <button style={{float:'right'}} className="delete-btn"

               data-card-id={card.id} onMouseDown={()=>{handlerDeleteCard(card.id)}}>X</button>

           </div>

         </div>

        </Draggable>

       ))}

     </div>

4.在最后我们需要注意的是:在移动端中使用 react-draggable 进行拖拽操作时,在拖拽内部onClick事件是失效的

解决方案:使用onTouchStart来替换onClick事件

示例代码:

<button style={{float:'right'}} className="delete-btn"

               data-card-id={card.id} onTouchStart={()=>{handlerDeleteCard(card.id)}} >X</button>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值