天天看點

Now you can provide attr "wx:key" for a "wx:for" to improve performance.

    如果想消除這個警告資訊,那麼可以在每個使用wx:for循環的地方加入一個wx:key屬性。官方文檔中對wx:key的解釋為:如果清單中項目的位置會動态改變或者有新的項目添加到清單中,并且希望清單中的項目保持自己的特征和狀态(比如<input/>中的輸入内容,<switch/>的選中狀态),需要使用wx:key指定清單中項目的唯一辨別符。

    wx:key的值以兩種形式提供:字元串代表在for循環的array中item的某個property,該property的值需要是清單中唯一的字元串或數字,且不能動态改變;保留關鍵字*this代表在for循環中的item本身,這種表示需要item本身是一個唯一字元串或者數字,比如當資料改變觸發渲染層重新渲染時,會校正帶有key的元件,架構會確定他們被重新排序而不是重新建立,以確定使元件保持自身的狀态并提高清單渲染時的效率。

    如果不提供wx:key,會報一個警告資訊。如果明确知道該清單是靜态的或者不必關注其順序,可以選擇忽略。

    官方的解釋并不是那麼容易了解,簡單的說,如果想消除這個警告資訊,那麼可以使用wx:key屬性。wx:key的取值有兩種形式:如果for循環數組中的子項是一個唯一不重複的字元串或者數字,那麼使用wx:key="*this"即可;如果for循環的子項是一個複雜的Object對象,那麼可以使用這個Object對象下某一個屬性名作為wx:key的取值,前提條件是這個屬性是一個唯一的字元串或數字,且不能被動态改變。

    是以,對于一些帶有狀态的元件(比如input和switch),再做清單渲染時應當考慮加入wx:key。而對于數字和字元串類型的資料,可以使用*this。