前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue自定义指令实现长按功能

vue自定义指令实现长按功能

作者头像
蛋蛋编程手记
发布2023-02-25 17:01:35
4500
发布2023-02-25 17:01:35
举报
文章被收录于专栏:蛋蛋编程手记蛋蛋编程手记

​最近在做一个仿微信的实时通讯工具,前端用vue和有赞vant开发的h5应用。

最近加了一个新的需求,要求有消息的撤回功能,长按自己发送的消息,弹出撤销框,点击撤销框可以撤销自己发送的消息。 ​

这个移动端的长按功能vue并没有原生支持,而是需要组合touchstart和touchend两个事件一起才能完成。

具体原理就是手指按下的时候触发定时器,当手指抬起的时候关闭定时器。在一定的时间内(800毫秒)如果没有抬起则认为是长按需要触发长按操作逻辑。

这里不仅需要两个事件。而且还需要引入额外的变量,也就是定时器。这些都是与业务无关的,如果代码写在业务组件里面,虽然也可以实现,但是代码看着不够简洁。

这里我们可以利用vue提供的自定义指令的能力,自己定义一个longpress的指令,并在bind函数中绑定touchstart和touchend事件,把定时器的逻辑写在bind函数中。至于具体的长按逻辑则由外部传递进来,通过bind函数的入参拿到。

最后需要长按指令的组件我们可以使用v-longpress="myfunc"来方便的使用起来

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 蛋蛋编程手记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档