如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如中的输入内容,
wx:key的值以两种形式提供
➢字符串
代表在for循环的array中item的某个property,该property的值需要是列表中唯一的字符串或数字,且不能动态改变
➢保留关键字
*this代表在for循环中的item本身,这种表示需要item本身是一个唯一的字符串或者数字,当数据改变触发渲染层重新渲染的时候,会校正带有key的组件,框架会确保它们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率
如示例2-13所示
<switch wx:for="{{objectArray}}" wx:key="unique" style="display:block;">{{item.id}}<switch><switch wx:for="{{numberArray}}" wx:key="*this" style="display:block;">{{item}}</switch>Page({data:{objectArray:[{id:5,unique:'unique_5'},{id:4,unique:'unique_4'},{id:3,unique:'unique_3'},{id:2,unique:'unique_2'},{id:1,unique:'unique_1'},{id:0,unique:'unique_0'},],numberArray:[1,2,3,4]}})
Attention
如不提供wx:key,会报一个warning。如果明确知道该列表是静态,或者不必关注其顺序,则可以选择忽略
