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

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

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

image.png

阅读 1.8k
1 个回答

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题