在初识小程序,对setDataD的写法千奇百怪:
setData是用来更新视图层数据变换,而我们在对页面渲染数组进行增删改查会出现不一样的写法,例如
del(e){
this.setData({
list:this.data.list.splice(e.mark.index,1)
})
},
这里看似没有任何问题,但其实,splice的返回值是被删除的数组元素,而splice的本质是改变原来的数组。
list:this.data.list.splice(e.mark.index,1)这里相当于是取到splice的返回值赋值给list,所以当我们点击删除时,此时的页面只会留下被点击删除的元素
逻辑转变一下
const arr = ['苹果','香蕉','西瓜','樱桃'];
const newArr = arr.splice(1, 1);
console.log(newArr);//打印香蕉
console.log(arr);//['苹果','西瓜','樱桃'];
正确操作
del(e){
this.data.list.splice(e.mark.index,1)
this.setData({
list:this.data.list
})
},