收藏
回答

【Bug】小程序按数据路径更新列表后dom节点属性渲染错误

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 微信iOS客户端 8.0.26 2.25.2

小程序开发文档中:性能与体验 -> 运行时性能 -> 3.4 setData 应只传发生变化的数据

第二点中提到:“建议以数据路径形式改变数组中的某一项或对象的某个属性,如 this.setData({'array[2].message': 'newVal', 'a.b.c.d': 'newVal'}),而不是每次都更新整个对象或数组”;在某些场景下,使用数据路径更新列表后,dom节点属性渲染错误。复现步骤:

  1. 导入代码片段
  2. 按顺序依次点击页面中的 A、B、C 按钮后,此时按钮 C 处于激活状态
  3. 依此点击列表 A、B、C、D、E 项,toast 提示获取到的 index 是错误的,查看 wxml 节点上渲染的 data-index 属性值也是错误的

以下为代码片段demo:

https://developers.weixin.qq.com/s/3Aj0zomi7RB3

回答关注问题邀请回答
收藏

1 个回答

  • Charlie
    Charlie
    2022-08-10

    没复现

    2022-08-10
    有用
    回复 4
    • 北方
      北方
      2022-08-10
      不是直接点击C,要按照顺序先点击按钮A,B,C,然后再点击列表ABCDE
      2022-08-10
      回复
    • Charlie
      Charlie
      2022-08-10回复北方
      哦,那你试试从A直接点到C,不要点B,看看会不会有问题,这样你应该就明白你的问题在哪儿了
      2022-08-10
      回复
    • 北方
      北方
      2022-08-11回复Charlie
      其实这是小程序在特定场景下渲染错误导致的,因为无论如何,循环渲染一个列表,索引都不应该会出现重复,所以我给出了比较详细的复现代码片段,在没修复之前,我只能避免用这种方式更新数据
      2022-08-11
      回复
    • CreepyNuts
      CreepyNuts
      02-19回复北方
      你把wx:key="id"换成wx:key="index"就好了
      02-19
      回复
登录 后发表内容