wx:for
我认为是类似于es6中的for-in/for-of写法,有点像(let item in list)的简化,遍历使用wx:for="{{listName}}",,默认循环数组的子对象为item,渲染数据的时候使用{{item.xxx}}
wx:for-item
将上面的item重命名,便于区分多层循环中选中的对象元素,不使用wx:for-item也不影响功能,但是影响阅读和维护
wx:for-index
多层循环的时候对当前数组下标进行命名,便于区分
wx:key
wx:key
的值以两种形式提供
- 字符串,代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。
- 保留关键字
*this
代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字,如:
当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。
wx:key="字符串"
这个”字符串”代表在 for 循环的 array 中 item 的某个“属性”,该“属性” 的值需要是列表中唯一的字符串或数字,且不能动态改变。比如id,
objectArray: [{
id: 5,
name: "Tome"
}
用于被遍历的组件需要多个属性的时候
wx:key="*this"
保留关键字”*this”代表在 for 循环中的 item 本身,
这种表示需要 item 本身是一个唯一的字符串或者数字
用于组件仅需要一个属性,且属性值唯一。
如果明确知道该列表是静态的,可以选择忽视它.key的值如果重复的话,程序并不会出现什么异常,但是控制台会输出警告提示你key值重复了。还有第一次渲染的时候就有重复的key值,控制台不会输出警告。