小程序警告:Now you can provide attr `wx:key` for a `wx:for` to improve performance.

問題

當我們在使用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章