微信小程序 setData的相关知识
在实际的小程序开发过程当中,经常会遇到下面的这种情况
有一组数据swiperList
data: { swiperList: [{ id: 0, type: ‘image‘, url: ‘https://7368-shuyuabn-9gke6t6k962d48ca-1304045188.tcb.qcloud.la/image/6.JPG?sign=39d14c3902ca802c5bbdca9487c4dfc8&t=1612537023‘, yiyan: ‘没有无聊的人生,只有无聊的人生态度‘, form: ‘刘瑜‘, iflike: "false" }, { id: 1, type: ‘image‘, url: ‘https://7368-shuyuabn-9gke6t6k962d48ca-1304045188.tcb.qcloud.la/image/1.JPG?sign=6a578b89d06a74141a01b35b26684e04&t=1612536951‘, yiyan: ‘没有任何一种逃避能得到赞赏,喜欢就去追,饿了就吃饭,管他是失败或是发胖‘, form: ‘‘, iflike: "false" }] }
此时 如果我们想要动态改变swiperList内任意一组数据中的iflike应该怎么做呢?
首先贴一下html标签
<block wx:for="{{swiperList}}" wx:key class="{{cardCur==index?‘cur‘:‘‘}}"> <view bindtap="like" data-likeid="{{item.id}}"> //我们通过循环swiperList获取其item 将内部的id绑定到like事件上 </block>
js代码:
like: function (event) { const that = this let likeid = event.currentTarget.dataset.likeid //绑定的like事件 var a = `swiperList[${likeid}].iflike` console.log(a) if (that.data.swiperList[likeid].iflike=== "false") { that.setData({ [a] : "true", }) } else if (that.data.swiperList[likeid].iflike=== "true") { that.setData({ [a]: "false", }) } console.log(that.data.swiperList[likeid].iflike) }
在setData时swiperList[likeid].iflike的语法无法实现的
所以在这里,首先我们定义a = `swiperList[${likeid}].iflike`,这样后面setData的时候就可以直接用[a]去替换原本需要实现的 swiperList[likeid].iflike。
这样我们就实现了需要的功能了