自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從微信小程序到鴻蒙JS開(kāi)發(fā)-list加載更多&回到頂部

開(kāi)發(fā)
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請(qǐng)前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com

[[383590]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

1、list加載更多

如果在list中需要展示的數(shù)據(jù)非常多,那么一次性獲取全部數(shù)據(jù)并顯示,對(duì)于后端服務(wù)器和前段渲染的性能都是很大的負(fù)擔(dān),浪費(fèi)資源且頁(yè)面加載速度會(huì)很慢。

在網(wǎng)頁(yè)端做分頁(yè)普遍是用戶點(diǎn)擊“上一頁(yè)”,“下一頁(yè)”進(jìn)行翻頁(yè),而移動(dòng)端設(shè)備一般是在滑動(dòng)到頁(yè)面底端后加載下一頁(yè)數(shù)據(jù),并將數(shù)據(jù)接在列表底部。在list組件中,可以通過(guò)onscrollbottom屬性綁定事件并處理。

視覺(jué)效果上來(lái)看數(shù)據(jù)是連續(xù)的,但其中已經(jīng)觸發(fā)了一次翻頁(yè)。

list部分 hml視圖層:

  1. <list scrollbar="auto" scrolleffect="no" onscrollbottom="loadMore" id="list"
  2.     <block for="{{ comments }}"
  3.         <list-item> 
  4.             <div> 
  5.                 <image src="/common/user.png"></image> 
  6.                 <div class="title"
  7.                     <text style="color: #333333; font-size: 32px;"
  8.                         {{ $item.user.username }} 
  9.                     </text> 
  10.                     <text style="color: #666666; font-size: 30px;"
  11.                         {{ $item.date }} 
  12.                     </text> 
  13.                 </div> 
  14.                 <rating numstars="5" rating="{{ $item.star }}" indicator="true"></rating> 
  15.             </div> 
  16.             <text class="content"
  17.                 {{ $item.content }} 
  18.             </text> 
  19.         </list-item> 
  20.     </block> 
  21. </list> 

css渲染層:

  1. list { 
  2.     width: 100%; 
  3.     height: 1400px; 
  4. list-item { 
  5.     width: 100%; 
  6.     border-bottom: 1px solid #bbbbbb; 
  7.     background-color: #fdfdfd; 
  8.     margin-bottom: 10px; 
  9.     display: flex; 
  10.     flex-direction: column
  11.     padding: 10px 0 10px 0; 
  12. list-item image { 
  13.     width: 60px; 
  14.     height: 60px; 
  15.     border-radius: 30px; 
  16.     margin-left: 20px; 
  17.     margin-top: 20px; 
  18.     object-fit: contain; 
  19. .title { 
  20.     margin-left: 20px; 
  21.     height: 100px; 
  22.     display: flex; 
  23.     flex-direction: column
  24.     width: 450px; 
  25. .title>text { 
  26.     height: 50px; 
  27.     line-height: 50px; 
  28. rating { 
  29.     width: 150px; 
  30.     height: 50px; 
  31. .content { 
  32.     margin: 10px 20px 10px 20px; 
  33.     font-size: 30px; 
  34.     color: #333333; 

js邏輯層:

  1. import fetch from '@system.fetch'
  2. import prompt from '@system.prompt'
  3.  
  4. export default { 
  5.     data: { 
  6.         ...... 
  7.         comments: [], 
  8.         page: 1, 
  9.         maxPage: 1 
  10.     }, 
  11.     onInit() { 
  12.         this.listComments(); 
  13.     }, 
  14.     // list觸底加載下一頁(yè)數(shù)據(jù) 
  15.     loadMore() { 
  16.         if (this.page < this.maxPage) { 
  17.             this.page++; 
  18.             this.listComments(); 
  19.         } else { 
  20.             prompt.showToast({ 
  21.                 message: "已經(jīng)到底啦"
  22.                 duration: 3000 
  23.             }) 
  24.         } 
  25.     }, 
  26.     // 分頁(yè)請(qǐng)求評(píng)論 
  27.     listComments() { 
  28.         fetch.fetch({ 
  29.             url: this.url + "/list?goodsId=" + this.id + "&pageNo=" + this.page, 
  30.             responseType: "json"
  31.             success: res => { 
  32.                 console.info(res.data); 
  33.                 let data = JSON.parse(res.data); 
  34.                 if (0 != data.code) { 
  35.                     prompt.showToast({ 
  36.                         message: "服務(wù)錯(cuò)誤"
  37.                         duration: 3000 
  38.                     }) 
  39.                 } else { 
  40.                     data.data.list.forEach(ele => { 
  41.                         this.comments.push(ele); 
  42.                     }); 
  43.                     this.page = data.data.page; 
  44.                     this.maxPage = data.data.maxPage; 
  45.                 } 
  46.             } 
  47.         }) 
  48.     } 

在服務(wù)器端,每次請(qǐng)求返回十條數(shù)據(jù),以及當(dāng)前頁(yè)數(shù)、總頁(yè)數(shù)。

2、list回到頂部

查看了一部分評(píng)論后,如果想要回到第一條評(píng)論的位置,需有一個(gè)“回到頂部”按鈕,點(diǎn)擊后列表自動(dòng)滾動(dòng)到最頂部。

在官方文檔list組件中,未提到如何實(shí)現(xiàn)這樣的功能。但在js中獲取組件實(shí)例后,有這么幾個(gè)API可供調(diào)用:

猜測(cè)是可以使list滾動(dòng),我們使用scrollTop(),使列表滾動(dòng)到最頂端。

  1. this.$element("list").scrollTop(); 

這樣是不起作用的,雖然源代碼注釋的意思似乎是smooth默認(rèn)為false。

smooth為false的效果,可以回到頂部,但比較生硬。

  1. this.$element("list").scrollTop({ 
  2.     smooth: false 
  3. }); 

smooth: true的效果,還是不錯(cuò)的。

按鈕使用type="circle",便可指定icon,實(shí)現(xiàn)圖標(biāo)按鈕。

hml視圖層:

  1. <button onclick="toTop" type="circle" icon="/common/totop.png"></button> 

css渲染層:

  1. button { 
  2.     position: fixed; 
  3.     right: 20px; 
  4.     bottom: 20px; 
  5.     background-color: #eeeeee; 

js邏輯層:

  1. toTop() { 
  2.        this.$element("list").scrollTop({ 
  3.            smooth: true 
  4.        }); 
  5.    }, 

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2021-02-20 09:52:02

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-02-23 12:25:26

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-03-02 09:29:29

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-02-23 12:23:57

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-02-21 11:09:18

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-02-22 14:56:55

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-02-25 10:01:19

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-02-04 13:49:41

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-02-23 09:52:42

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-02-05 09:46:16

鴻蒙HarmonyOSjs開(kāi)發(fā)

2021-02-07 09:17:24

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-02-24 09:36:03

鴻蒙CSS應(yīng)用開(kāi)發(fā)

2017-05-08 15:03:07

微信小程序開(kāi)發(fā)實(shí)戰(zhàn)

2016-09-28 18:10:59

微信程序MINA

2016-09-27 16:38:24

JavaScript微信Web

2016-11-04 10:49:48

微信小程序

2017-01-09 10:42:56

微信小程序

2016-09-27 20:36:23

微信HttpWeb

2016-11-04 10:30:17

微信小程序

2018-09-11 10:32:07

云開(kāi)發(fā)小程序開(kāi)發(fā)者
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)