wx:key 设置不生效
发布于 6 年前 作者 luoyang 8000 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

当渲染一个对象数组的时候,我期望每次新插入数据就在 ready() 中打印一下它的数据。但是在实际的使用过程中会发现新插入的数据不会触发 ready(),每次都触发都是初始的数据。

个人猜测是因为 wx:key 设置不生效,导致默认使用数组下标来设置 key,每次向数组前面插入数据的时候 (0,-10) 的 DOM 总是存在的导致了这个问题。

  • 预期表现

希望能每次插入就打印插入的数据,而不是初始数据

  • 复现路径

代码片段中点击向前插入按钮查看控制台的打印结果即可发现问题

  • 提供一个最简复现 Demo

代码片段 wechatide://minicode/zkkjJemA6vY8

6 回复

这样做有何实际意义?

@LastLeaf 嗯,已经发现了,thx~

@赵子龙 我就是故意要往前插的

你好,wx:key 不支持数据绑定的形式,你的例子中,应为 wx:key=“item”

@ghost 应该是官方的回答是对的,就是 item,对象名只是我随便写的例子。这里的主要问题还是我写了花括号了。。。之前一直都分不清什么情况要加花括号什么情况下不要加。。。。

我测试了确实是wx:key导致的问题,

wx:key=‘item.item’ 其中的item.item 改成对象字段名称即可,你把对象名称写成item,不知道你是故意为之还是为何?

修改代码:

const data = Array.from({length: 10}, (v, k) => ({

sid: ‘list’ + (k+base)

}));

<itema wx:for="{{data}}" wx:key=“sid” data="{{item.sid}}">

</itema>

你concat插反了

回到顶部