問題
當我們在使用wx:for
遍歷列表數據的時候,可能會遇到以下警告:
Now you can provide attr `wx:key` for a `wx:for` to improve performance.
解析
字面意思呢,缺少wx:key
屬性,不過既然是警告,也就表示可有可無,那爲什麼警告呢?
當我們在使用wx:for
遍歷列表數據的時候,原則上來講每條數據都是不一樣的,所以需要使用 wx:key
來指定列表中項目的唯一的標識符;但是也有可能會出現每條數據就是一樣的情況,所以缺少wx:key
屬性是警告而不是異常報錯。
如不提供 wx:key,會報一個 warning, 如果明確知道該列表是靜態,或者不必關注其順序,可以選擇忽略。
解決
添加wx:key
屬性。wx:key 的值以兩種形式提供:
- 字符串,代表在 for 循環的 array 中 item 的某個
property
,該 property 的值需要是列表中唯一的字符串或數字,且不能動態改變,如id,name等。 - 保留關鍵字
*this
代表在 for 循環中的 item 本身,這種表示需要 item 本身是一個唯一的字符串或者數字,如:當數據改變觸發渲染層重新渲染的時候,會校正帶有 key 的組件,框架會確保他們被重新排序,而不是重新創建,以確保使組件保持自身的狀態,並且提高列表渲染時的效率。
示例
<block wx:for="{{imgUrls}}" wx:key="item.id">
...
</block>
或者
<block wx:for="{{imgUrls}}" wx:key="*this">
...
</block>
參考:
https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/list.html#wx:key