众所周知,官方版的小程序示例是一个国标(入门学习的标准),
但在实际的应用学习 中发现该示例中的"接口"->"媒体"->"图片"示例有个BUG.
上传的图片循环显示是报错,内容如下:
Now you can provide attr "wx:key" for a "wx:for" to improve performance.
53 | <view class="weui-uploader__bd">
54 | <view class="weui-uploader__files">
> 55 | <block wx:for="{{imageList}}" wx:for-item="image">
| ^
56 | <view class="weui-uploader__file">
57 | <image class="weui-uploader__img" src="{{image}}" data-src="{{image}}" bindtap="previewImage"></image>
58 | </view>
望能处理一下~
不明白什么叫做“保持自己的特征和状态”,重新setData的时候,其他的input的内容还是被改变了,其实排序都没有变化
哦,原来这样,受教了.多谢!
这个不是bug,是一个关于性能优化方面的提示
具体参见
wx:key
如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如
<input/>
中的输入内容,<switch/>
的选中状态),需要使用wx:key
来指定列表中项目的唯一的标识符。wx:key
的值以两种形式提供字符串,代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。
保留关键字
*this
代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字,如:当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。
如不提供
wx:key
,会报一个warning
, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。