怎么在vue中利用瀑布流組件實現(xiàn)一個上拉加載更多功能?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
在商洛等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)整合營銷推廣,外貿(mào)網(wǎng)站建設(shè),商洛網(wǎng)站建設(shè)費用合理。
正在加載 上拉加載更多 沒有更多了
然后就是業(yè)務(wù)部分了
在動手寫組件之前,先理清需求:
加載頁面 -> 滑到底部 -> 上拉一定距離 -> 加載第二頁 -> 繼續(xù)前面步驟 -> 沒有更多
這是一個用戶交互邏輯,而我們需要將其映射為代碼邏輯:
首屏自動加載第一頁 -> 滑動到底部&&按下時候滑動距離Y軸有一定偏移量 -> 請求后端加載第二頁 -> 根據(jù)返回字段判斷是否還有下一頁
有了代碼邏輯,主干就出來了,加載和判斷由事件來控制,而又作為一個vue組件,我們需要配合vue生命周期來掛載事件和銷毀事件
export default { mounted() { // 確定容器 // 容器綁定事件 }, beforeDestory() { // 解綁事件 }, }
如果沒有解綁的話,每次你加載組件,就會綁定一次事件…
然后我們需要一些核心事件回調(diào)方法來在合適的時間加載數(shù)據(jù)渲染頁面, 回想一下,第一我們需要http獲取數(shù)據(jù)的load函數(shù),然后我們需要三個綁定事件的回調(diào)函數(shù)pointDown(), pointMove(), pointUp(),分別對應(yīng)用戶按下、移動、彈起手指操作:
export default { ··· methods:{ /** * 加載一組數(shù)據(jù)的方法 */ load() { // 設(shè)置options this.$axios.request(options).then((res) => { // 獲取數(shù)據(jù)后的處理 }).catch((e) => { // 異常處理 }) }, /** * 鼠標(biāo)按下事件處理函數(shù) * @param {Object} e - 事件對象 */ pointerdown(e) { // 獲取按下的位置 this.pageY = e.changedTouches ? e.changedTouches[0].pageY : e.pageY }, /** * 鼠標(biāo)移動事件處理函數(shù) * @param {Object} e - 事件對象 */ pointermove(e) { const container = this.$container const pageY = e.changedTouches ? e.changedTouches[0].pageY : e.pageY const moveY = pageY - this.pageY // 如果已經(jīng)向下滾動到頁面最底部 if (moveY < 0 && (container.scrollTop + Math.min( global.innerHeight, container.clientHeight, )) >= container.scrollHeight) { // 阻止原生的上拉拖動會露出頁面底部空白區(qū)域的行為(主要針對iOS版微信) e.preventDefault() // 如果上拉距離超過50像素,則加載下一頁 if (moveY < -50) { this.pageY = pageY this.load() } } }, /** * 鼠標(biāo)松開事件處理函數(shù) */ pointerup() { // 這邊就是取消拖動狀態(tài),需要注意在拖動過程中不要再次觸發(fā)一些事件回調(diào),否側(cè)亂套 this.dragging = false }, }, ··· }
基本上主干已經(jīng)算完工了,一些props傳入或者一些邏輯控制細節(jié)需要再額外添加,貼出整個組件的源碼:
正在加載 上拉加載更多 沒有更多了
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。