uni-app小程序开发踩坑记录

uni-app小程序开发踩坑记录,第1张

最近要从零开发一个跟后台管理系统对接的小程序,因为功能比较复杂,时间短,选择了比较火的uni-app,因为小程序出现的时间较短,各方面并不完善,开发过程中就是不断踩坑的过程,特此记录一小下。

uni-app虽然功能还不完善,但是插件市场里东西还是不少的,在搭建框架中因为需求要求借鉴了之前开发的PC端,所以有一些跟之前开发VUE相关的插件 ,可以提高开发效率,

插件:

坑:

1覆盖原生组件,需要用cover-view容器,但是cover-view里可包含的标签有限,类似view等在真机调试时不显示,需全部替换成cover-view,且icon无法显示,可以用cover-imaga代替。

2小程序和小程序之间的跳转(如腾讯云的人机滑动验证),跳转回来时需要进行 *** 作,此时可以判断appvue中的options,如果按小程序文档中来说当optionsscene === 1038时是小程序跳回来的场景,但是部分手机跳回来是optionsscene为1001,只能将这2种都作为跳转判断的条件。

3小程序跳转回来app中的onshow有时不执行,这个原因暂未找到

4在uniapp的H5版本 ,接入 腾讯云滑动验证 ,示例的点击滑动验证元素是通过dom *** 作的,但是无效,可能跟uniAPP不支持dom *** 作有关系,采用定制接入方法一,手动调用。

最近在做一个uniapp的项目的时候,碰到了一个Tab选项卡的需求,我立马就想到了曾经在视频里看到的利用swiper实现丝滑选项卡的功能。

但是很遗憾,我并没有光看就会的本事,本着遇事不决先百度的原则,就在百度找了一篇真实有用,但是有小小bug的,下面是原po地址:

uni-app使用swiper切换页面每个滑块高度自适应

懒得点的可以接着往下看哈,我也会把详细步骤以及碰到的bug贴出来。下面是我改造后的效果图

首先就是Tab选项卡的点击切换块,这里我是用了小程序自带的scroll-view来实现的,同时给该元素添加scroll-into-view属性来实现点击跟踪(其实这效果不是特别好,我期望的效果是点击这个的时候还留点位置给上一个,但是我太菜了加上为了省事所以就直接用这个了)

scroll-into-view的用法可自行查阅官方文档

接着是swiper标签块,这里因为实现都一样,所以我就直接把原博客那边的贴过来了,大家根据自己的需求更改类名及swiper-item内部的组件即可

这里有个注意点,就是要给swiper-item内部的组件(盒子)一个相同的类名,后面获取高度时需要用到。

初始数据方面,这里我也把我的初始数据贴出来,大家根据需求自行修改即可

后面的方法本来想一个个贴的,但是发现好像有点乱,所以就直接全贴出来了,里面的逻辑大伙应该能理清吧哈哈

到这里js部分也结束了,最后是css部分,我就是在这里踩坑的。原博最后面说要给swiper-item里面的组件设置一个min-height: 100%。这样设置之后就会有个问题,也就是

因此大家在初始化css数据的时候需要注意一下,这里我也把我的初始css贴出来,大家根据需求自行修改即可

到这里这一块的内容就全部结束了,噢对了关于setSwiperHeight里面获取dom元素的方法,也就是

unicreateSelectorQuery() 。这玩意说实话我也搞不太懂,总之就跟selectorQuery选择器差不多,CVM大法:复制粘贴,然后修改数据即可。

第一次正经写文还是很紧张的哈哈,希望能帮到有需要的人。谢谢各位

uniapp获取当前页面路径

方式一:

方式二:

用官方已经挂在的 $mp 变量获取

var pages = getCurrentPages() // 获取栈实例

pages是一个数组对象,每个对象里面其实就是已经打开的页面的对象,可以根据pageslength查看跳转级数

应用场景(返回固定页面):

如果A为根页面,直接使用

其中A页面不是根页面

如图

若从A页面-->B页面-->D页面,从D返回A,只需delta为 2,即

若从A页面-->C页面-->F页面-->G页面-->D页面,从D返回A,需要设置delta: 4,即

使用var pages = getCurrentPages() // 获取所有打开页面,

若A为第三级页面(即从根页面到A页面跳转两次),计算返回级数

这周做一个页面时,有一个人物排序,可以手动拖动更改排序位置的功能。在经过查找之后,找到了

sortablejs ,它可以用来实现这个拖拽的功能。

在查看 sortablejs 官方文档时,看到里面中有一个 onUpdate 事件,拖拽改变位置后,其中的返回值中,就有着起始index值和改变后的index值,通过这个,就可以更改数组的内容,来达到拖拽后改变位置的功能。

这里获取的节点是需要拖拽列表的父节点

因为在做的过程中,发现如果用 *** 作dom节点的位置去修改item的顺序时,会产生bug,所以经过查找资料,终于在 Vue中使用Sortable 找到了问题所在,因此在修改item顺序前,应先修改其对于的节点。

先删除移动的节点,在将移动的节点插入到原有的节点中

注意:因为当从下向上拖动时,节点会增加一个,所以原有的索引值会少一位,所在当 newIndex < oldIndex 时,因使用 oldLi 节点的下一个节点

删除原有数组,并且存储数据

将数据添加到停留的数组索引值上

场景:输入框与发送按钮是兄弟关系。输入框获取焦点时会唤起键盘,点击发送的输入框会失去焦点。

要求:点击发送按钮时,输入框不能失去焦点,键盘一直呈现唤出状态

分析:

当我们点击某一个元素时,这个元素就会默认获取焦点,在上述场景中,输入框在获取焦点时会唤出键盘,但是由于发送按钮与输入框不是同一个Dom元素,所以点击发送按钮时输入框就会失去焦点,发送按钮就会回去焦点,键盘就是收起。

如果阻止点击Dom元素的默认获得焦点这个事情,那么上一个获取焦点的Dom元素就不会失去焦点。也就是输入框不会失去焦点,键盘就不会收起

*** 作:发送按钮的事件用@touchendprevent=“ ”

touchend(触屏事件) prevent(阻止默认事件)

例子:

<view class="send" :class="sendMsgClass" @touchendprevent="sendText">

<view class="btn">发送</view>

</view>

如果分析的不对,请指教

uniapp 中要获取地址 >

以上就是关于uni-app小程序开发踩坑记录全部的内容,包括:uni-app小程序开发踩坑记录、【uni-app】记一个 scroll-view +swiper实现顺滑Tab选项卡、uniapp 获取当前页面路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9300178.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存