跨平台应用开发进阶 (五) :uni-app 实现列表项左划操作
一、前言
应用Uni-app
开发跨平台移动端 App 项目时,遇到列表项左划操作需求。经过研读Uni-app门户,发现uni-swipe-action组件可以实现列表项左划操作功能。基础效果如下:
应用该组件能够满足基本的列表项目左划操作功能。完整示例 demo 请移步《uni-swipe-action组件实现列表项左划操作》下载。
二、优化
在组件封装层面,发觉uni-swipe-action
组件并不能很好的满足开发需求,故考虑应用其他解决方案。
视图渲染部分组件视图渲染层主要渲染列表项左划后的操作栏位,包含自定义图标及操作文字。其中,还涉及vue插槽
应用,对于Vue插槽
不了解的同学可以参考博文《Vue进阶(幺贰捌):Vue插槽:slot、slot-scope与指令v-slot应用讲解》、《Vue进阶(幺贰柒):插槽详解》。
JS 业务逻辑层面 JS 业务逻辑层主要涉及View
的Touch
事件@touchstart、@touchmove、@touchend
,通过监听手势划动触发相应事件。
实现效果如下:
三、问题分析
动态加载数据,组件滑动失效是怎么回事?
因为组件会在加载的时候获取相应的节点信息数据 ,获取需要滑动的距离,所以有时候动态加载数据之后,可能是时机的问题,导致节点信息获取失败,那么组件就不能正常滑动。此时,可以通过
this.$forceUpdate();
强制页面重新渲染解决。
完整组件代码示例,请移步《uni-app列表项实现左划操作功能》下载。
3.1 this.$forceUpdate();
调用强制更新方法this.$forceUpdate()
会更新视图和数据,并触发updated
生命周期函数。Vue
中一些复杂对象的修改,有时并不能被Vue
监听到,对于深层次结构数据,可以使用$set
方法使之被Vue
监听,但如果不想利用$set
方法去设置,也可以使用$forceUpdate
方法,$forceUpdate
可以使Vue
组件按照最新数据重新渲染。
有关Vue
中 $set
方法的具体应用,详参博文
四、拓展阅读
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/76a4d889745a594d048fb967f】。文章转载请联系作者。
评论