這次帶給大家怎樣做出下滑頁面底部無限載入資料需求,怎下滑頁面底部無限載入資料的注意事項有哪些,以下就是實戰案例,一起來看一下。
看到一篇Implementing an Infinite Scroll with Vue.js , 覺得挺實用的就看了下, 順便簡單翻譯了一下給需要的人參考.
從這個項目中可以加深對Vue的生命週期的理解, 何時開始axios請求, 如何結合Vue使用原生js來寫scroll事件等等, 我這裡主要是對原文的重點提取和補充
本文技術要點
Vue生命週期
axios簡單用法
moment.js格式化日期
圖片懶載入
結合原生js來寫scroll事件
請求節流
建立專案
首先建立一個簡單的vue專案
# vue init webpack-simple infinite-scroll-vuejs
然後安裝專案所需用的一些插件
# npm install axios moment
初始化使用者資料
專案搭建完後, 跑起來看看
# npm run dev
開啟http://localhost:8080無誤後, 我們開始修改程式碼, 先看看獲取用戶資料這塊,
<script> import axios from 'axios' import moment from 'moment' export default { name: 'app', // 创建一个存放用户数据的数组 data() { return { persons: [] } }, methods: { // axios请求接口获取数据 getInitialUsers() { for (var i = 0; i < 5; i++) { axios.get(`https://randomuser.me/api/`).then(response => { this.persons.push(response.data.results[0]) }) } }, formatDate(date) { if (date) { return moment(String(date)).format('MM/DD/YYYY') } }, beforeMount() { // 在页面挂载前就发起请求 this.getInitialUsers() } } </script>
這裡原作者也專門提醒, 完全沒有必要也不建議在加載頁面的時候請求5次, 只是這個接口一次只能返回1條資料, 僅用於測試才這樣做的. 當然我這裡也可以透過Mock來模擬資料, 就不詳細說了~
接下來來寫模板結構和样式, 如下:
<template> <p> </p> <h1 id="Random-User">Random User</h1> <p> </p> <p> <img src="/static/imghwm/default1.png" data-src="person.picture.large" class="lazy" alt="怎麼做出下滑頁面底部無限載入資料需求" > </p> <p> </p> <p>{{ person.name.first}} {{ person.name.last }}</p> <ul> <li> <strong>Birthday:</strong> {{ formatDate(person.dob)}} </li> <p> <strong>Location:</strong> {{ person.location.city}}, {{ person.location.state }} </p> </ul> </template> <style> .person { background: #ccc; border-radius: 2px; width: 20%; margin: 0 auto 15px auto; padding: 15px; img { width: 100%; height: auto; border-radius: 2px; } p:first-child { text-transform: capitalize; font-size: 2rem; font-weight: 900; } .text-capitalize { text-transform: capitalize; } } </style>
這樣頁面就能顯示5個人的個人資訊了.
處理無限滾動載入邏輯
我們接下來需要在methods裡面加入scroll()來監聽滾動, 並且這個事件是應該在mounted()這個生命週期內的. 代碼如下:
<script> // ... methods: { // ... scroll(person) { let isLoading = false window.onscroll = () => { // 距离底部200px时加载一次 let bottomOfWindow = document.documentElement.offsetHeight - document.documentElement.scrollTop - window.innerHeight <= 200 if (bottomOfWindow && isLoading == false) { isLoading = true axios.get(`https://randomuser.me/api/`).then(response => { person.push(response.data.results[0]) isLoading = false }) } } } }, mounted() { this.scroll(this.persons) } } </script>
這段代碼原文是有一點拼寫錯誤的. 我這裡修正了, 另外增加了距離底部即開始載入資料, 並進行截流.
儲存好, 回到瀏覽器, 查看效果, 已經沒有問題了~
總結
滾動到頁面底部無限加載的功能在Vue上實現其實和普通的頁面開發差不多, 每次滾動加載未完成的情況下不會觸發請求下一次, 每次請求push到數組內, 通過的資料綁定實現了懶加載(其實0 0我不太認可...), 看完是不是感覺挺簡單的.
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是怎麼做出下滑頁面底部無限載入資料需求的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

禪工作室 13.0.1
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境