小程序数组更新 但swiper不正常显示问题

本文介绍了在小程序开发中遇到的一个问题:数组更新后,Swiper组件无法正常显示轮播图。当切换tab卡时,由于current属性未设置或未正确更新,导致轮播图显示异常。解决方案是为Swiper添加current属性,并在切换tab时重置其值为0,确保与数组下标对应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小伙伴们,今天小汪带来的是自己在项目中出现的一个小问题,如果能给大家带来丁点的帮助,嘿嘿 老规矩(滑稽保命)。
好的 进入正题,因为小汪正在写的是一个小程序商城的项目,也是后来接的手,事情的起因是什么呢,请看截图:在这里插入图片描述

  1. 第一个tab卡的轮播图数据有6张,也展示了6张,是正常的 可是到第二个tab卡中轮播图就不展示了,到这里可能大家心里想有没有可能是第二个轮播图没有数据呢? 请看下图:在这里插入图片描述

  2. 包括WXML中也实实在在的存在着img的元素也有链接,但轮播图内容就是不显示。
    在这里插入图片描述
    可能心细的伙伴已经发现了问题,接下来就是问题出现的原因和解决的方法了。

  3. 当轮播图当前展示的图片发生改变时(也就是图片索引),如果用户没有添加 current 属性值,框架则会自动绑定当前展示的索引值。

  4. 页面发生切换时,current 的值会被存储,也就是记住当前轮播的索引。再次返回会重新给current赋上当前存储的索引值。

  5. 比方:假设当前的图片是第4张,那么在未设置 current 的时候,框架会给 current 赋值 =3(对应索引),切换页面改变渲染的数组之后,如果该数组的长度是3,也就是最大 索引 = 2 ,框架还是会给默认的 current 赋值3(此时渲染swiper的img数组里根本没有索引为3的图片),没有找到就会导致元素为空,但是0-2的数据是存在的,所以页面会显示位置占位,但是这个占位得元素里没有内容。 相信看到这里就应该想到怎么解决了吧。

  6. 解决方法:在swiper标签中添加属性 current , 在每一次切换tab卡时,将绑定给 current 属性的变量重置到下标0即可;代码如下:

 WXML代码
<swiper current="{{swipeiCurrent}}">
	<block wx:for="{{showPNG}}" wx:key="index">
		<swiper-item bindtap="Link" data-index='{{index}}' >
			<view class="iview fadeIn" hidden="{{showlist}}">
				<image src="{{item.imgUrl}}" mode="widthFix"/>
			</view>
		</swiper-item>
	</block>
</swiper>

 js代码
const that = this; Ps:这里是我的一个习惯,可以直接用this的
that.setData({
   swipeiCurrent: 0
})

这就是小汪在开发中出现的小插曲,希望大家在开发中出现Bug不要太过烦躁,如果能帮助到大家 我想我们都会很开心。我们下篇再见!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值