错误代码:
let that = this
let id=e.currentTarget.dataset.down
that.setData({
[`posts[${id}].praises1`]:`posts[${id}].praises`+1
})
因为在数据绑定语法中,使用中括号包裹的变量时会将这个变量当做字符串处理,而不会将它解析为变量。所以在上述代码中,实际上只是将posts[${id}].praises1 赋值为字符串posts[${id}].praises+1,并不会进行加一操作。
要实现加一操作,可以使用模板字符串${ }的方式将变量解析为实际的值,如下:
let that = this
let id = e.currentTarget.dataset.down
let praisesKey = `posts[${id}].praises`
let newPraises = that.data.posts[id].praises + 1
that.setData({
[praisesKey]: newPraises
})
在这个例子中,首先用中括号包裹变量 praisesKey 来访问 posts 中对应帖子的 praises 属性,并将其赋值为 newPraises,即原来的点赞数加一的结果。由于使用了模板字符串的语法,在中括号内的 praisesKey 变量会解析为实际的属性名,因此可以实现动态修改数据属性的效果。