微信小程序wxml列表渲染原理解析
這篇文章主要介紹了微信小程序wxml列表渲染原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
列表渲染存在的意義
以電商為例,我們希望渲染5個商品,而又希望容易改變,我們就要在wxml中動態(tài)添加。
<view>
<block wx:for="{{products}}" wx:for-item="item" wx:key="index">
<view>{{index+1}}:{{item.name}}</view>
</block>
</view>
Page({
data: {
message: "hello world",
products: [{
name: "商品A"
},
{
name: "商品B"
},
{
name: "商品C"
},
{
name: "商品D"
},
{
name: "商品E"
}
]
}
})
上面在一個非顯示組件block中,我們渲染五個有內(nèi)容的view
wx:for是循環(huán)數(shù)組,wx:for-item即給列表賦別名
子循環(huán)
<view wx:for="{{parentList}}">
{{item.id}}
<view wx:for="{{item.childList}}" wx:for-item="items">
{{items.name}}{{items.account}}
</view>
wx:key用來穩(wěn)定渲染,作為渲染想的唯一標識(主要有三種)
1、字符串
代表在 for 循環(huán)的 array 中 item 的某個 property,該 property 的值需要是列表中唯一的字符串或數(shù)字,且不能動態(tài)改變。
data: {
input_data: [
{ id: 1, unique: "unique1" },
{ id: 2, unique: "unique2" },
{ id: 3, unique: "unique3" },
{ id: 4, unique: "unique4" },
]
}
//test.wxml
<input value="id:{{item.id}}" wx:for="{{input_data}}" wx:key="unique" />
2、保留關(guān)鍵字 *this
代表在 for 循環(huán)中的 item 本身,這種表示需要 item 本身是一個唯一的字符串或者數(shù)字,如:
當數(shù)據(jù)改變觸發(fā)渲染層重新渲染的時候,會校正帶有 key 的組件,框架會確保他們被重新排序,而不是重新創(chuàng)建,以確保使組件保持自身的狀態(tài),并且提高列表渲染時的效率。
data: {
numberArray: [1, 2, 3, 4],
stringArray:['aaa','ccc','fff','good']
}
//test.wxml
<input value="id:{{ item }}" wx:for="{{numberArray}}" wx:key="*this" />
<input value="id:{{ item }}" wx:for="{{stringArray}}" wx:key="*this" />
},
一般是指定一個唯一的字段(類似于id的定義);
3、通配符+名字
用wx:key和不用對比
| wk:key | 組件識別 | 渲染情況 | 狀態(tài)情況 | for效率 |
|---|---|---|---|---|
| 有 | 各組件可識別 | 渲染時僅改變組件順序 | 保持組件之前原來狀態(tài) | 效率高 |
| 無 | 組件無法識別 | 渲染時重新創(chuàng)建各組件 | 重置組件的初始狀態(tài) | 效率低 |
1.需要wx:key的情況
列表中項目的位置會動態(tài)改變或者有新的項目添加到列表中
希望列表中的項目保持自己的特征和狀態(tài)
(如 <input/> 中的輸入內(nèi)容,<switch/> 的選中狀態(tài))
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript中new操作符的原理與實現(xiàn)詳解
你知道new嗎?你知道new的實現(xiàn)原理嗎?你能手寫new方法嗎?不要擔心,這篇文件就來帶大家深入了解一下JavaScript中的new操作符,感興趣的小伙伴可以學(xué)習一下2022-10-10
WEB 前端開發(fā)中防治重復(fù)提交的實現(xiàn)方法
這篇文章主要介紹了JS WEB 前端開發(fā)中防治重復(fù)提交的實現(xiàn)方法,涉及到表單提交的幾種方式介紹,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-10-10
微信小程序?qū)崿F(xiàn)多選框全選與取消全選功能示例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)多選框全選與取消全選功能,結(jié)合實例形式分析了微信小程序多選框功能實現(xiàn)、布局顯示及全選、取消全選相關(guān)操作技巧,需要的朋友可以參考下2019-05-05

