微信小程序调用swiper轮播组件,元素不显示问题记录
内容参考:原文:https://blog.csdn.net/sinat_38426472/article/details/80986985
原文:https://www.geek-share.com/detail/2695279087.html
问题描述:
swiper中嵌套多个swiper-item,数量是动态循环生成的。
目前存在的问题是:在页面首次加载时元素正常显示,当点击左侧目录切换页面进行数据重新获取操作时,会改变轮播数据,当再次返回页面时,轮播图的元素不显示,但是审查元素是存在的(图片是链接地址,浏览器能正常下载显示)。然后延迟大概两分钟后又显示了,但数据不到一秒就取到了。
存在原因:
1. 当改变轮播图当前指针,即current属性值时,若该属性没有绑定任何数据,框架会自动绑定当前操作的值;
2. 页面发生切换时,current的值会被存储,也就是记住当前轮播的index。再次返回会重新赋上当前存储的值 ;
3. 也就是说假设滑动到第三屏时,current=2,切换页面改变数据,如果数据只有两条,那么再次返回页面,swiper会查找第三屏的元素,没有找到就会导致元素为空,但是其他屏的数据是存在的,所以页面会显示位置,但是没有元素。
4. 这种情况应该是在轮播图不是自动轮播的情况下出现的。
---------------------
我的问题存在原因:
1.因为左侧目录文件为子页面(调用了z-tree组件),点击目录进行页面跳转后,当前目录页面生命周期未结束,带参数跳转至轮播图页面后,当前页面也开始了/生命周期函数--监听页面加载,数据重新获取操作时,会改变轮播数据,但目录文件页面生命周期未销毁,轮播图的元素就不显示了。
2.从z-tree目录文件传参跳转至轮播图页面时,因为使用的wx.navigateTo(Object object),保留了当前文件,故调用// 生命周期函数--监听页面卸载onUnload: function() {}无效,使用wx.redirectTo(Object object);
详情可参考微信小程序路由组件相关文档:https://developers.weixin.qq.com/miniprogram/dev/api/wx.redirectTo.html
解决办法:
1. 为当前轮播图绑定current属性
2. 页面切换返回时,为current重新赋值,current=0;
/**
* 生命周期函数–监听小程序页面显示(每次打开页面都会调用一次)
*/
onShow: function() {
this.setData({
current: 0
})
},
3.在子页面执行wx.redirectTo(Object object);方法后,调用onUnload: function() {}监听页面卸载函数,再执行父页面数据重新获取操作。
// 生命周期函数--监听页面卸载
onUnload: function() {
console.log("onUnload");
}
- [新手教程] 微信小程序 轮播图 swiper图片组件
- 微信小程序之轮播组件:swiper
- 微信小程序 swiper组件构建轮播图的实例
- 微信小程序使用swiper组件实现类3D轮播图
- 微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
- 微信小程序(轮播图 swiper组件)
- 微信小程序 PullDownRefresh下拉刷新或者onShow切换页面请求或者频繁请求swiper里面元素不显示
- 微信小程序的轮播图swiper问题
- 微信小程序 swiper组件轮播图详解及实例
- 【微信小程序常见问题】使用picker组件显示年份解决方案
- 微信小程序之视图容器(swiper)组件创建轮播图
- 关于微信小程序下拉刷新组件加载图片(三个小点)不显示的问题
- [微信小程序]根据图片宽高动态改变swiper(轮播图)组件宽高
- 微信小程序 轮播图 swiper图片组件
- vue一个组件引入多个swiper轮播可能引发的分页器数量异常问题
- 解决拼团首页swiper组件手动轮播卡顿问题
- 学习微信小程序--组件(swiper)
- 微信小程序picker组件遇到的问题与解决方案
- 微信小程序例子——使用icon组件显示常用图标
- 微信小程序碰到的第一个问题:pages/joke/joke 出现脚本错误或者未正确调用 Page()