收藏
回答

【附代码片段】iPhone设备上data-index与预期不符,模拟器和安卓正常?

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug iOS 16.4.1 iPhone13 8.0.44

iPhone设备上data-index与预期不符,模拟器和安卓正常

在以下代码中,使用了data-index绑定了index,但是当listData发生变化时,data-index绑定的{{index}}未跟随变化

原listData如下

listData: [{
         id1,
      }, {
         id2,
      }, {
         id3,
      }, {
         id4


变化后的listData如下

listData = [{
         id: 3,
      }]


<block wx:for="{{listData}}" wx:key="id">
      <view style="padding: 10rpx" bind:tap="toBug" data-index="{{index}}">
         <text class="{{item.id == 3 ? 'red' : ''}}">ID:{{item.id}},索引:{{index}}</text>
      </view>
   </block>


在toBug事件中接受到的index还是初次渲染的值,请看截图,代码片段可复现(点红色的步骤)

https://developers.weixin.qq.com/s/94I5qtmP7bNC

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

1 个回答

  • 啊哈
    啊哈
    2023-12-15

    确实能复现。把wx:key="id",修改为 wx:key="index"能正常。 感觉是wx:key导致的。

    2023-12-15
    有用
    回复 4
    • 啊哈
      啊哈
      2023-12-15
      2023-12-15
      回复
    • 金钱豹
      金钱豹
      2023-12-15回复啊哈
      我也看到这个了,但是wx:key=index这个写法和不写wx:key是一样的,也就是说key无效的时候,列表重新渲染了,问题得到解决了。好像最近才出现的这个问题,以前一直是这个写法没问题,最近出现这个问题的很多才发现
      2023-12-15
      回复
    • 啊哈
      啊哈
      2023-12-15回复金钱豹
      之前到没怎么留意过。不过现在这样的话,在实际应用中会出问题呀,比如要删除列表中的某项数,列表刷新之后再删除,data-index对应的id变了就删错数据了。我邀请官方人员试试,看有没有人解答下。
      2023-12-15
      1
      回复
    • 金钱豹
      金钱豹
      2023-12-15回复啊哈
      好的,感谢。我先临时解决了,清空listData再重新赋值就没问题了
      2023-12-15
      回复
登录 后发表内容