久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 一個快速的Vue3無限滾動組件

一個快速的Vue3無限滾動組件

來源:千鋒教育
發(fā)布人:wjy
時間: 2022-09-20 09:52:29 1663638749

  如果你在社交媒體上停留的時間過長,那么,你所在的網(wǎng)站很可能正在使用無限滾動組件。

  無限滾動組件是在用戶向下滾動頁面時加載新內容,而不是將其分成多個頁面。

  它們對于特定類型的內容(例如用戶生成的內容)非常有效。

  以下是無限滾動的示例。

一個快速的Vue3無限滾動組件1

 

  在今天的教程中,我們將使用 Composition API 創(chuàng)建一個 Vue3 無限滾動組件。這是我們將在它結束時構建的內容的預覽。

  如你所見,它是無限滾動,屏幕右側的滾動條反映了這一點。

一個快速的Vue3無限滾動組件2

 

  現(xiàn)在,讓我們一起來看看這個組件的實現(xiàn)過程。

  為什么還要使用無限滾動組件?

  我們都見過使用無限滾動來顯示其內容的網(wǎng)站的示例,但是什么時候使用它,它的效果會比使用典型的分頁系統(tǒng)更好呢?

  你可以閱讀我之前分享的一篇文章《無限滾動與分頁哪個用戶體驗更好?如何正確使用它們》,在這里,我只簡單的總結一下它們的有缺點。

  無限滾動的優(yōu)點:

  用戶參與和內容發(fā)現(xiàn)

  滾動比點擊更好(更好的可用性)

  滾動適用于移動設備

  無限滾動的缺點:

  頁面性能和設備資源

  項目搜索和位置 - 用戶無法為頁面添加書簽并保留位置

  不相關的滾動條

  就像所有與 Web 開發(fā)有關的事情一樣,選擇任何一個選項都有正當?shù)睦碛伞U垊毡乜紤]哪個最適合你的項目!

  無論如何,學習如何構建一個 Vue3 無限滾動組件是非常有趣的,并且可能對你有用。

  首先,讓我們從高層次上回顧一下這個系統(tǒng)是如何工作的。

  主要分為三個部分:

  生成內容的模擬 API 調用

  呈現(xiàn)單個內容的 PostComponent

  ListComponent 包含所有內容組件并處理從 API 加載內容

  1.模擬 API 調用

  在教程中,我們將編寫一個返回硬編碼數(shù)據(jù)的虛擬 API 調用。如果你在真實的后端和數(shù)據(jù)庫中實現(xiàn)這一點,重要的方面,你可以根據(jù)數(shù)據(jù)庫中的大小和位置決定以某種方式限制你的結果。

  這個 API 調用可以是任何東西,從簡單應用程序中的簡單數(shù)據(jù)庫查詢一直到更高級應用程序中的復雜推薦算法。

  以下是社交媒體網(wǎng)站常用的內容加載算法的一些不同想法:

  發(fā)布日期

  與當前用戶的相關性

  帖子上的活動

  然而,為簡單起見,我們的算法只會生成隨機的帖子數(shù)據(jù),并根據(jù)給定的參數(shù)返回 X 個帖子。

var names = ['Matt Maribojoc''Lebron James''Bill Gates''Childish Gambino'] // used to generate posts for this tutorial

const getPosts = (number) => {

  // generate a number of posts

  // in a real setting, this would be a database call or algorithm

  let ret = []

  for (var i = 0; i < number; i++) {

    ret.push({

      author: names[i % names.length],

      content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do.'

    })

  }  

  return ret

}

export default getPosts

  2.制作我們的內容組件

  現(xiàn)在我們有了生成內容的方法,讓我們創(chuàng)建一個允許我們渲染它們的組件。

  這段代碼沒有什么花哨的,我們只需要通過組件的 props 接收一個帖子,然后渲染作者和內容。這里也有一些風格可以讓事情變得更漂亮。

一個快速的Vue3無限滾動組件3

  3.顯示我們的內容

  接下來,讓我們實際弄清楚如何在屏幕上顯示一些帖子。這就是 ListComponent.vue 組件派上用場的地方。

  如果你沒有任何 Vue3 經(jīng)驗,這段代碼對你來說可能有點奇怪。但是請查看本 Vue3 入門指南。

  簡而言之,Vue3 將 Options API 替換為 Composition API,這意味著代碼(生命周期掛鉤、數(shù)據(jù)等)都組織在一個設置方法中。

  所以首先,我們要導入一些東西:

  我們的 API 調用

  我們的 PostComponent

  用于創(chuàng)建反應數(shù)據(jù)的參考

  onMounted 和 onUnmounted 訪問這些生命周期 hooks。

一個快速的Vue3無限滾動組件4

  接下來,在我們的 setup 方法中,我們想要設置一個響應式的內容變量來調用我們的 getPosts API 調用。不要忘記返回它,以便我們的模板可以訪問它!

一個快速的Vue3無限滾動組件5

  最后,為了在模板中顯示我們的數(shù)據(jù),我們想要運行一個 v-for 循環(huán)來迭代我們的內容并為每個內容呈現(xiàn)一個 PostComponent。我們的模板應該是這樣的(注意 .list-component 有一個 ref,我們稍后會談到)

一個快速的Vue3無限滾動組件6

  我們當前的頁面應該呈現(xiàn) 10 個內容,但是如果我們滾動到底部,什么都不會發(fā)生。

  那么,現(xiàn)在讓我們繼續(xù)進行激動人心的部分:無限滾動!

  4.Vue3 無限滾動

  現(xiàn)在我們已經(jīng)完成了所有設置,當用戶向下滾動到內容底部時,我們可以開始加載更多數(shù)據(jù)。

  讓我們從創(chuàng)建一個方法開始,它一次加載 10 個內容并將它們附加到我們的帖子變量中。

一個快速的Vue3無限滾動組件7

  現(xiàn)在,我們只需要一種方法來觸發(fā)這個方法。我們將通過添加一個監(jiān)聽滾動事件并調用方法的事件監(jiān)聽器來做到這一點。我們將在組件安裝時添加它,并在組件卸載(銷毀)時刪除它。

一個快速的Vue3無限滾動組件8

  非常棒!現(xiàn)在,我們需要準備好開始加載更多內容了。如果你還記得前面的教程內容的話,其實,我們只需要向 .list-component 元素添加了一個 refs 屬性。如果你之前在 Vue 中使用過 refs,這是一個熟悉的概念,但我們在 Vue3 中設置它們的方式有點不同。

  我們將再次使用 refs 方法來實例化我們的 ref,然后,從我們的 setup 方法中返回它。

一個快速的Vue3無限滾動組件9

  通過使用 refs 訪問我們的元素,我們可以完成我們的方法來確定我們是否滾動到內容的底部。

  以下代碼通過檢查我們內容的底部是否在屏幕上可見來工作。如果是,我們調用我們的方法來加載更多內容!

一個快速的Vue3無限滾動組件10

  就是這樣!當我們向下滾動到當前內容的底部時,應該會自動加載新內容。讓我們看看我們有什么。

  無限滾動組件的可能擴展

  這只是創(chuàng)建Vue3無限滾動組件的介紹。有很多不同的方向可以改進它。

  如果你在真實系統(tǒng)中構建它,我會考慮添加以下一些想法。

  由于 API 調用將是異步的,因此創(chuàng)建某種加載微調器,在加載新數(shù)據(jù)時顯示

  創(chuàng)建更復雜的 API 算法并將其連接到數(shù)據(jù)庫

  為每個內容添加更多數(shù)據(jù)并找到顯示它的新方法

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT