如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如中的输入内容,
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。如果明确知道该列表是静态,或者不必关注其顺序,则可以选择忽略