当前位置: 首页 > 知识库问答 >
问题:

javascript - 请大家帮忙看看这个微信小程序代码为什么会出现视图不更新情况?

卢伟志
2023-06-03

image.png
点击优惠券弹出选择优惠券的列表,选中之后,已经修改了
this.data.shopList[idx2].coupons_price= cou_money
并且已经打印了cou_money 为当前选择的优惠券金额 而且也this.setData了
但是选择之后,隐藏弹窗 优惠券处却还是空,
image.png

但是当我再点击弹窗的时候,值去出现了,不知道为什么会有这种页面视图刷新不及时的问题?

image.png

共有1个答案

尤祖鹤
2023-06-03

setData 的时候把数组展开一下?

this.setData({
  show6: false
  shopList: [...shopList2]
})

另外没有看明白前面既然使用了 forEachshopListcoupons_price 置空了。为什么不直接使用 .map() 呢,没有选中的滞空,已经选择的了设置勾选和 coupons_price 值。
最后再把 .map() 返回的数据通过 setData 更新。

另外就是代码贴的不是很完整,也不知道你一开始有没有在 data 里面声明 shopList 变量为数组。
如果说修改完 coupons_price 值之后没有跟新视图,后面点击弹窗后 coupons_price 值更新了,就是变量监听有问题。
如果是Vue项目很多人就会使用 $forceUpdate() 来强制更新视图了,但只是治标不治本。把变量监听问题解决了就好了。

 类似资料: