uniapp小程序触底加载不生效

什么是触底加载

触底加载类似于分页,却又不同于传统的分页,他只有在用户上滑页面,并在页面距离底部一定距离时才会触发

触底加载怎么写

开启触底加载

首先需要开启本页面的触底,即在pages.json中找到想要开启触底的页面,在style中将enablePullDownRefresh设置为true,默认的触底距离是50px,如果你需要更改可以设置onReachBottomDistance,这个参数代表距离底部多远发生触底

{
	"path": "pages/shool/shool",
	"style": {
		"navigationBarTitleText": "",
		"enablePullDownRefresh": true,
        "onReachBottomDistance": 150
		}
}
触底加载事件

在页面中添加onReachBottom触底函数,跟onLoad平级。在onReachBottom中可以写自己的触底后的代码

触底加载不生效

首先你可以在页面通过生命周期onPageScroll来监听页面是否发生滚动,一般触底不生效都是因为页面其实并没有发生滚动
其次如果你使用了scroll-view,可以使用它自身的事件scrolltolower来判断是否触底

### 如何在 UniApp 中实现微信小程序触底加载更多功能 要在 UniApp 中实现微信小程序触底加载更多功能,可以按照以下方式设计逻辑结构并编写代码: #### 1. 数据初始化与页面配置 首先,在 `data` 函数中定义必要的变量来存储当前页码、每页数据量以及总数据状态。 ```javascript export default { data() { return { page: 1, // 当前页码 pageSize: 15, // 每页数据条数 listData: [], // 存储获取到的数据 hasMore: true, // 是否还有更多数据 loadingText: '上拉加载', // 默认提示文字 }; }, }; ``` #### 2. 页面滚动监听事件 通过绑定 `onReachBottom` 方法监听页面触底事件。每次触发该方法时,调用接口加载下一页数据,并更新 UI 和状态。 ```javascript methods: { async loadMoreData() { if (!this.hasMore) return; this.loadingText = '正在加载...'; // 修改提示语 try { const res = await this.fetchData(this.page + 1); // 调用接口获取新数据 if (res.length === 0 || res.length < this.pageSize) { this.hasMore = false; // 如果返回数据足或为空,则无更多数据 this.loadingText = '没有更多'; } else { this.listData.push(...res); // 将新数据追加至已有数据数组 this.page += 1; // 更新页码 this.loadingText = '上拉加载'; // 还原默认提示语 } } catch (error) { console.error('加载失败:', error); this.loadingText = '加载失败,请重试'; } }, fetchData(page) { // 模拟异步请求接口 return new Promise((resolve) => { setTimeout(() => { resolve(Array.from({ length: Math.random() * 10 }, (_, i) => ({ id: `${page}-${i}`, name: `商品 ${page}-${i}` }))); }, 1000); }); } }, // 监听页面触底事件 onReachBottom() { this.loadMoreData(); // 触发加载更多逻辑 } ``` 上述代码实现了分页加载的核心逻辑[^3]。每当用户滚动到底部时,会自动尝试加载下一页的内容。如果服务器返回的数据足以填满整个页面大小或者没有任何数据返回,则停止继续加载。 #### 3. 渲染视图层 最后,在模板文件中展示已有的数据列表,并动态调整底部提示信息的状态。 ```html <template> <view class="container"> <!-- 商品列表 --> <block v-for="(item, index) in listData" :key="index"> <text>{{ item.name }}</text> </block> <!-- 底部加载提示 --> <view class="loading-tip">{{ loadingText }}</view> </view> </template> <style scoped> .container { padding: 20px; } .loading-tip { text-align: center; margin-top: 20px; color: gray; } </style> ``` 以上即为完整的 UniApp 微信小程序触底加载更多功能的实现方案。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值