如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如中的输入内容,的选中状态),则需要使用wx:key指定列表中项目的唯一标识符

wx:key的值以两种形式提供

➢字符串

代表在for循环的array中item的某个property,该property的值需要是列表中唯一的字符串或数字,且不能动态改变

➢保留关键字

*this代表在for循环中的item本身,这种表示需要item本身是一个唯一的字符串或者数字,当数据改变触发渲染层重新渲染的时候,会校正带有key的组件,框架会确保它们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率

如示例2-13所示

  1. <switch wx:for="{{objectArray}}" wx:key="unique" style="display:block;">
  2. {{item.id}}
  3. <switch>
  4. <switch wx:for="{{numberArray}}" wx:key="*this" style="display:block;">
  5. {{item}}
  6. </switch>
  7. Page({
  8. data:{
  9. objectArray:[
  10. {id:5,unique:'unique_5'},
  11. {id:4,unique:'unique_4'},
  12. {id:3,unique:'unique_3'},
  13. {id:2,unique:'unique_2'},
  14. {id:1,unique:'unique_1'},
  15. {id:0,unique:'unique_0'},
  16. ],
  17. numberArray:[1,2,3,4]
  18. }
  19. })

Attention

如不提供wx:key,会报一个warning。如果明确知道该列表是静态,或者不必关注其顺序,则可以选择忽略