微信小程序对象数组赋值的坑

前因

在小程序中使用下这种方式赋值,也就是直接修改数组对象,然后进行整个数组的setData,有时会造成一些极其离谱的问题

 this.data.breakdowns[e.currentTarget.dataset.index].breakdownDescription = e.detail.value;
    this.setData({
      breakdowns: this.data.breakdowns
    })

给我造成的现象:在ios下,textarea输入内容一直闪烁,输入不了内容,也删除不了内容。排查了2个小时的业务逻辑发现,纯属小程序的问题,和自己的业务代码没有丝毫问题!!!!

解决方式

使用这种方式,多走一步字符串模版变量进行赋值,奇迹般的就好了,简直离谱。

 const key = `breakdowns[${e.currentTarget.dataset.index}].breakdownDescription`
    this.setData({
      [key]: e.detail.value
    })

 

 

posted @ 2023-12-15 09:21  飞飞飞飞0928  阅读(98)  评论(0编辑  收藏  举报