国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uni-app小程序中做頁面滾動底部或頂部加載效果

這篇具有很好參考價值的文章主要介紹了uni-app小程序中做頁面滾動底部或頂部加載效果。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在移動應(yīng)用開發(fā)中,無限滾動加載是一個常見的功能,用戶可以通過滑動屏幕來加載更多的內(nèi)容,從而提高應(yīng)用的用戶體驗。本文將介紹如何使用Uniapp實現(xiàn)無限滾動加載的功能。

概述

我們需要實現(xiàn)的無限滾動加載功能的具體效果如下:

  1. 當(dāng)用戶滑動到底部時,自動加載更多的數(shù)據(jù)。

  2. 在加載數(shù)據(jù)時,顯示一個加載動畫,防止用戶誤以為應(yīng)用已經(jīng)崩潰。

  3. 當(dāng)所有數(shù)據(jù)都已經(jīng)加載完畢時,提示用戶“沒有更多數(shù)據(jù)了”。

方案

我們可以通過以下步驟來實現(xiàn)無限滾動加載功能:

  1. cs.vue組件中,使用uni.createIntersectionObserver()方法創(chuàng)建一個交叉觀察器,用于觀察加載動畫是否進入了用戶的視圖區(qū)域。

  2. 在交叉觀察器的回調(diào)函數(shù)中,判斷加載動畫是否進入了用戶的視圖區(qū)域,并根據(jù)需要加載更多的數(shù)據(jù)。

  3. 在加載數(shù)據(jù)時,使用事件來控制加載動畫的出現(xiàn)與隱藏。

  4. 當(dāng)所有數(shù)據(jù)都已經(jīng)加載完畢時,使用事件來控制“沒有更多數(shù)據(jù)了”的提示是否顯示。

  5. index.vue組件中,引入cs.vue組件,并通過事件來控制加載動畫和“沒有更多數(shù)據(jù)了”的提示是否顯示。

實現(xiàn)

cs.vue組件中,我們需要使用事件來控制加載動畫的出現(xiàn)與隱藏。具體來說,當(dāng)交叉觀察器的回調(diào)函數(shù)中判斷需要加載數(shù)據(jù)時,我們需要通過$emit方法觸發(fā)一個名為aaa的事件,并傳遞參數(shù)0,表示加載動畫需要出現(xiàn)。當(dāng)數(shù)據(jù)加載完畢后,我們再次觸發(fā)aaa事件,并傳遞參數(shù)1,表示加載動畫需要消失。代碼如下:

if (res.intersectionRatio > 0) {
  this.$emit("aaa", 0); // 加載動畫出現(xiàn)
  setTimeout(() => {
    this.a += 10;
    this.$emit("aaa", 1); // 加載動畫消失
  }, 3000)
}

cs.vue組件中,我們還需要使用事件來控制“沒有更多數(shù)據(jù)了”的提示是否顯示。具體來說,當(dāng)所有數(shù)據(jù)都已經(jīng)加載完畢時,我們需要通過$emit方法觸發(fā)一個名為aaa的事件,并傳遞參數(shù)2,表示“沒有更多數(shù)據(jù)了”的提示需要顯示。代碼如下:

if (this.a > 50) return this.$emit("aaa", 2);

index.vue組件中,我們需要引入cs.vue組件,并通過事件來控制加載動畫和“沒有更多數(shù)據(jù)了”的提示是否顯示。具體來說,我們需要監(jiān)聽aaa事件,并根據(jù)傳遞的參數(shù)來控制加載動畫和“沒有更多數(shù)據(jù)了”的提示是否顯示。代碼如下:

<template>
  <view class="container">
    <text>{{appear === 0 ? '小球出現(xiàn)' : '小球消失'}}</text>{{appear}}
    <view class="page-section">
      <scroll-view class="scroll-view" scroll-y>
        <cs :appear="appear" @aaa="(val) => appear=val"></cs>
      </scroll-view>
    </view>
  </view>
</template>

<script>
	import cs from './cs.vue';
	let observer = null;
	export default {
		components: {
			cs
		},
		data() {
			return {
				appear: 1
			}
		},

	}
</script>

最后,為了避免內(nèi)存泄漏,我們需要在cs.vue組件銷毀時將交叉觀察器斷開連接。具體來說,我們需要在onUnload生命周期函數(shù)中使用disconnect()方法將交叉觀察器斷開連接。代碼如下:

onUnload() {
  if (observer) {
    observer.disconnect()
  }
}

至此,我們就完成了無限滾動加載的實現(xiàn)。完整代碼如下:

cs.vue組件代碼:

<template>
	<view>
		<view class="item" v-for="item of a" :key="item">
			{{item}}鋤禾日當(dāng)午
		</view>
		<qiuy-loading class="ball" :class="{'is':appear===0}"></qiuy-loading>
		<view v-show="appear===2">
			沒有數(shù)據(jù)了
		</view>
	</view>
</template>

<script>
	let observer = null;
	import QiuyLoading from './QiuyLoading.vue'
	export default {
		components: {
			QiuyLoading
		},
		props: ["appear"],
		data() {
			return {
				a: 20
			}
		},
		mounted() {
			observer = uni.createIntersectionObserver(this);
			observer.relativeTo('.scroll-view').observe('.ball', (res) => {

				// 當(dāng)a》50時,停止加載
				if (this.a > 50) return this.$emit("aaa", 2);
				// 如果當(dāng)前狀態(tài)已經(jīng)在加載中,則不進行。
				if (this.appear !== 1) return;
				// 出現(xiàn)了
				if (res.intersectionRatio > 60) {
					// 先讓加載動畫顯示出來
					this.$emit("aaa", 0);
					setTimeout(() => {
						this.a += 10;
						// 加載出了數(shù)據(jù),關(guān)閉加載動畫
						this.$emit("aaa", 1);
					}, 3000)
				}
			})
		},
		onUnload() {
			if (observer) {
				observer.disconnect()
			}
		}
	}
</script>

<style>
	.notice {
		margin-top: 150rpx;
		margin: 150rpx 0 400rpx 0;
	}

	.is {
		height: auto;
		overflow: hidden;
	}

	.item {
		line-height: 100rpx;
		font-size: 40rpx;
	}
</style>

index.vue組件代碼:

<template>
	<view class="container">
		<text>{{appear === 0 ? '小球出現(xiàn)' : '小球消失'}}</text>{{appear}}
		<view class="page-section">
			<scroll-view class="scroll-view" scroll-y>
				<cs :appear="appear" @aaa="(val) => appear=val"></cs>
			</scroll-view>
		</view>

	</view>
</template>
<script>
	import cs from './cs.vue';
	let observer = null;
	export default {
		components: {
			cs
		},
		data() {
			return {
				appear: 1
			}
		},
	}
</script>
<style>
	.scroll-view {
		height: 800rpx;
		background: #fff;
		border: 1px solid #ccc;
		box-sizing: border-box;
		/* padding-bottom: 30px; */
	}

	.scroll-area {
		height: 1300rpx;
		display: flex;
		flex-direction: column;
		align-items: center;
		transition: .5s;
	}
</style>

QiuyLoading.vue里的內(nèi)容

<template>
	<view class="loader">
		<view class="l">L</view>
		<view class="o">o</view>
		<view class="a">a</view>
		<view class="d">d</view>
		<view class="i">i</view>
		<view class="n">n</view>
		<view class="g">g</view>
		<view class="d1">.</view>
		<view class="d2">.</view>
	</view>
</template>

<script>
</script>

<style>
	.loader {
		text-align: center;
		height: 0;
		overflow: hidden;
	}

	.is {
		height: auto;
		padding-bottom: 20rpx;
	}
</style>

最后,看下效果吧!

uni-app小程序中做頁面滾動底部或頂部加載效果文章來源地址http://www.zghlxwxcb.cn/news/detail-474923.html

到了這里,關(guān)于uni-app小程序中做頁面滾動底部或頂部加載效果的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 解決uni-app微信小程序input,textarea輸入框在底部時,鍵盤彈起頁面整體上移問題

    解決uni-app微信小程序input,textarea輸入框在底部時,鍵盤彈起頁面整體上移問題

    問題是這樣的input ,textarea獲取焦點時會自動調(diào)起手機鍵盤,設(shè)置 :adjust-position=“true”,和不設(shè)置都會導(dǎo)致鍵盤彈起時頁面整體上移 問題分析 input 獲取焦點時會自動調(diào)起手機鍵盤,設(shè)置 :adjust-position=“true”,會導(dǎo)致鍵盤彈起時頁面整體上移 思路: 設(shè)置使鍵盤彈起使頁面不

    2024年02月11日
    瀏覽(96)
  • 【uni-app】【01】底部導(dǎo)航欄與頁面切換

    【uni-app】【01】底部導(dǎo)航欄與頁面切換

    1.(配置文件在哪)uni-app 路由控制是在 pages.json 文件中的。 2.(基本配置項有哪些)初學(xué)的時候主要有三個配置項,① pages ② globalStyle ③ tabbar [!TOC] 接下來主要是對這三個配置項做一個簡單介紹。 負責(zé)頁面管理。不需要自己寫的,你在項目的 pages 文件夾下創(chuàng)建頁面會自動生成配

    2023年04月27日
    瀏覽(25)
  • uni-app監(jiān)聽頁面滾動

    在uni-app中可以通過監(jiān)聽頁面滾動事件來實現(xiàn)滾動效果或響應(yīng)滾動事件 在需要監(jiān)聽滾動的頁面或組件中,添加一個 scroll 元素,用于容納內(nèi)容并實現(xiàn)滾動效果。 在頁面或組件的方法中添加對應(yīng)的滾動事件處理函數(shù)。

    2024年02月07日
    瀏覽(101)
  • uni-app前端H5頁面底部內(nèi)容被tabbar遮擋

    uni-app前端H5頁面底部內(nèi)容被tabbar遮擋

    在用uniapp寫小程序的時候,底部有一部分內(nèi)容沒顯示出來,被底部的tabbar遮擋住了 給最外部的view設(shè)置樣式 padding-bottom: var(--window-bottom) ,如下 參考1 參考2 使用 uni-app 框架開發(fā)的一個項目,發(fā)現(xiàn) H5 端頁面底部的內(nèi)容被導(dǎo)航欄(Tabbar)遮擋,小程序端可以正常顯示。 查閱資料

    2024年02月04日
    瀏覽(23)
  • uni-app微信小程序,APP都適用自定義頂部導(dǎo)航

    uni-app微信小程序,APP都適用自定義頂部導(dǎo)航

    *使用自定義的導(dǎo)航樣式,首先需要把原生的頂部的導(dǎo)航方式給隱藏掉(\\\"navigationStyle\\\": \\\"custom\\\") *手機頂部手機狀態(tài)欄的高度 *微信小程序中膠囊的位置信息存儲(使用store存儲) *由于微信小程序中帶有導(dǎo)航膠囊,所以需要根據(jù)膠囊去獲取一定的參數(shù)信息 在微信小程序中,我們只需要獲

    2024年02月06日
    瀏覽(91)
  • 關(guān)于uni-app微信小程序監(jiān)聽頂部左上角的返回事件

    關(guān)于uni-app微信小程序監(jiān)聽頂部左上角的返回事件

    在項目上返回上一級的時候需要清空vuex里的數(shù)據(jù),使用了onBackPress無效。 查看官方文檔后才發(fā)現(xiàn)onBackPress對微信小程序無效。? 然后我發(fā)現(xiàn)了另一個生命周期——onUnload 完美解決?。?!

    2024年02月08日
    瀏覽(27)
  • uni-app做h5IOS底部tabbar高度在不同的tabbar頁面會忽高忽低

    uni-app做h5IOS底部tabbar高度在不同的tabbar頁面會忽高忽低

    ?原因不祥,解決辦法的話在App.vue中

    2024年02月17日
    瀏覽(28)
  • uni-app滾動分頁 兼容(App 小程序 H5)

    uni-app滾動分頁 兼容(App 小程序 H5)

    因為手機端本身屏幕空間不大 所以大家一般都會選擇用滾動分頁 首先 我在根目錄下創(chuàng)建了一個 api目錄 下面創(chuàng)建了一個bookApi.js 其中寫了一個請求函數(shù) getBookList 根據(jù)當(dāng)前頁 page 和 每頁展示多少條 pageSize 獲取數(shù)據(jù) 那么 我的組件代碼是這樣的 首先 我們肯定要引入bookApi.js中的

    2024年02月16日
    瀏覽(95)
  • 【uni-app】uni-app實現(xiàn)聊天頁面功能(小程序)——布局篇

    【uni-app】uni-app實現(xiàn)聊天頁面功能(小程序)——布局篇

    在工作中使用uni-app參與開發(fā)一個小程序,其中要寫一個簡單的聊天頁面,雖然功能不多(只有一個發(fā)送文字的功能),但是其中的細節(jié)比較多,也踩過很多坑,特此記錄下來。要實現(xiàn)的頁面如圖所示,該篇主要講講如何布局(參考了很多文章之后根據(jù)頁面需求進行一個整合)

    2024年02月05日
    瀏覽(515)
  • uni-app頂部下拉舒心

    操作步驟 基于 scroll-view 組件實現(xiàn)下拉刷新,需要通過以下方式來實現(xiàn)下拉刷新的功能。 配置 refresher-enabled 屬性,開啟下拉刷新交互 監(jiān)聽 @refresherrefresh 事件,判斷用戶是否執(zhí)行了下拉操作 配置 refresher-triggered 屬性,關(guān)閉下拉狀態(tài)

    2024年01月24日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包