中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信開發之如何實現列表渲染多層嵌套循環

發布時間:2021-09-10 18:13:34 來源:億速云 閱讀:137 作者:小新 欄目:移動開發

這篇文章主要介紹微信開發之如何實現列表渲染多層嵌套循環,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

undefined

示例:

<view wx:for="{{items}}">
 {{index}}: {{item.message}}
</view>

還有一個九九乘法表把數據直接寫到wxml里的,并不是動態二維數組的列表渲染。

<view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i">
 <view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="j">
 <view wx:if="{{i <= j}}">
 {{i}} * {{j}} = {{i * j}}
 </view>
 </view>
</view>

那么今天,我們主要來講講動態多維數組和對象混合的列表渲染。

微信開發之如何實現列表渲染多層嵌套循環

講解

何為多維數組和對象混合,給個很簡單的例子

twoList:[{
 id:1,
 name:'應季鮮果',
 count:1,
 twodata:[{
'id':11,
'name':'雞脆骨'
 },{
'id':12,
'name':'雞爪'
 }]
 },{
 id:2,
 name:'精致糕點',
 count:6,
 twodata:[{
'id':13,
'name':'羔羊排骨一條'
 },{
'id':14,
'name':'微辣'
 }]
 }]

上述例子就是一個數組,這都是我們日常開發過程中,經常會碰到的JSON格式,

該數組的元素是有對象,對象又分為屬性,屬于數組對象混合,可能對于剛接觸小程序的童鞋,碰到這種數組對象混合的就會發難了。

一層循環

oneList:[{
 id:1,
 name:'應季鮮果',
 count:1
 },{
 id:2,
 name:'精致糕點',
 count:6
 },{
 id:3,
 name:'全球美食烘培原料',
 count:12
 },{
 id:4,
 name:'無辣不歡生猛海鮮',
 count:5
 }]

以上數組對象混合JSON,是測試只有一層循環的,我們看看在 wxml 里怎么循環,我們先看一下要循環渲染到頁面上的效果圖。

微信開發之如何實現列表渲染多層嵌套循環

<view wx:for="{{oneList}}"wx:key="id">
 {{index+1}}、{{item.name}}
</view>

我們可以看到,這里直接用兩個花括號來給 view 循環列表,注意強調一下,請記得一下要用 兩個花括號數據起來,如果不包起來, view 也會循環出來,但并不是自己要循環的數據,而且是給了一個假象給你以為是有循環了,這里開發工具有點坑人的感覺,這個還需要多細心點,這里記住一點,只要是有數據的,就需要花括號。

另外默認數組的當前項的下標變量名默認為index,數組當前項的變量名默認為item,同時我這里也順道演示了如何使用數組變量名和下標。

二層循環

微信開發之如何實現列表渲染多層嵌套循環

JSON代碼

twoList:[{
 id:1,
 name:'應季鮮果',
 count:1,
 twodata:[{
'id':11,
'name':'雞脆骨'
 },{
'id':12,
'name':'雞爪'
 }]
},{
 id:2,
 name:'精致糕點',
 count:6,
 twodata:[{
'id':13,
'name':'羔羊排骨一條'
 },{
'id':14,
'name':'微辣'
 }]
},{
 id:3,
 name:'全球美食烘培原料',
 count:12,
 twodata:[{
'id':15,
'name':'秋刀魚'
 },{
'id':16,
'name':'錫箔紙金針菇'
 }]
}]

wxml代碼

<view class="pad10"wx:for="{{twoList}}"wx:key="id">
 <view>
 {{index+1}}、{{item.name}}
 </view>
 <view wx:for="{{item.twodata}}"wx:for-item="twodata"wx:key="id">
 ----{{twodata.name}}---{{item.name}}
 </view>
</view>

以上截圖和代碼是二層嵌套內容。

我們在wxml代碼里,很明顯的看到有兩個 wx:for 的控制屬性,在二層循環的JSON代碼里,我們看每個單數組里還有一級數據 twodata ,這里是需要再循環渲染到頁面上的,在第一層數據里,直接再循環 item.twodata 即可,請記得一定要帶上花括號。

在第二層的循環里,建議把當前項的變量名改為其他,即在wxml代碼里看到的 wx:for-item="twodata" ,因為默認的當前項的變量名為 item ,如果不改換其他的話,你是拿不到第一層循環的數據的,因為被第二層的變量名覆蓋了。

所以我們在wxml代碼里,在第二層循環時,可以看到還可以循環第一層的值,即 ------- 。

三層以上的多層循環

三層以上的多層的數組循環,在原理上同二層循環是一樣的,能理解了二層數組循環,對于三層以及三層以上都能得心應用的。

需要注意的地方,那就是老生常談的問題了,數據需要用花括號括起來,從第二層起,把默認的當前項的變量名改為其他,例如 wx:for-item="twodata" ,還有細心再細心。

wx:key唯一標識符

為什么會有 wx:key 的出現呢,官方給的解釋是,如果列表中項目的位置會動態改變或者有新的項目添加到列表中,并且希望列表中的項目保持自己的特征和狀態(如 input 中的輸入內容, switch 的選中狀態),需要使用 wx:key 來指定列表中項目的唯一的標識符。

當數據改變觸發渲染層重新渲染的時候,會校正帶有 key 的組件,框架會確保他們被重新排序,而不是重新創建,以確保使組件保持自身的狀態,并且提高列表渲染時的效率。

在開發過程中, wx:key 的作用對于項目作用是非常大的,如果從文字上無法理解的童鞋,可以到github clone demo到微信開發工具里,親自體驗下。

微信開發之如何實現列表渲染多層嵌套循環

我們看到這個GIF動畫圖,這里有一個 switch 的開啟狀態, switch 的狀態是在標題為 羔羊排骨一條 的,在對這個數組增加數據時,這個 switch 的狀態并不跟隨著 羔羊排骨一條 ,并不保持自己的狀態。

那我們再看另一個例子,使用了wx:key唯一標識符。

微信開發之如何實現列表渲染多層嵌套循環

這個GIF動畫圖,也是點擊開啟了 switch 的狀態,唯一有不同的地方,就是在新增數據時,是保持著自己的狀態的。

相信通過這兩個小例子,對wx:key唯一標識符應該也有所了解啦,想要提升技術,就要多折騰,自己在小程序里,寫個 wx:for 和 wx:key 體會下。

還有一個需要注意的地方,我們先看看以下代碼

<view class="pad10"wx:for="{{twoList}}"wx:key="id">
</view>

wx:key="id" ,我們看到 wx:key 里的值并不需要花括號的,是的,這里是比較特別的地方,不需要花括號,同時也不需要參數名,需要是雖然數據里的一個字段名。

以上是“微信開發之如何實現列表渲染多層嵌套循環”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛阳市| 武陟县| 长治市| 禄丰县| 苏尼特左旗| 沧州市| 马边| 大渡口区| 武清区| 四会市| 临夏县| 枣阳市| 施甸县| 固安县| 罗山县| 长春市| 横峰县| 宣化县| 阆中市| 德清县| 鹤山市| 什邡市| 如皋市| 昌吉市| 铜川市| 抚宁县| 遂川县| 靖宇县| 郑州市| 哈尔滨市| 牡丹江市| 曲阳县| 安化县| 鄂伦春自治旗| 长宁区| 太仆寺旗| 富宁县| 泊头市| 广安市| 教育| 永安市|