注意目录和修改相同的字符编码

谈谈面试时遇到的uniapp框架的问题?

1、我告诉面试官,我写的是app项目,用的是uni-app框架,面试官反问我是H5?我说不是 ,就是app,面试官又说uniapp不就是H5,我当时还一愣一愣的,后来我查了一下,确实可以说uniapp是H5,虽然官网没有这么介绍,但是开发的uniapp项目相当于是H5页面,只是装在了Android壳子中,其实开发的还是页面。另外,uniapp是可以跨平台使用,可以发布在app平台、H5平台和小程序平台,可参考以下图:

 

 

 2、请说一下在uniapp开发中下拉刷新、上拉加载的原理?

(1)下拉刷新:

        原理:大部分的下拉刷新控件,都是用contentInset实现的。默认情况下,如果一个UIScrollView的左上角在导航栏的正下方,那么它的contentInset是64,而contentOffset是-64。继续下拉的话,contentOffset就会越来越小,如果上滑,contentOffset就会增大,直到左上角达到屏幕的左上角时,contentOffset刚好为0。

默认情况下,如果下拉一个UIScrollView,在松手之后,会弹回初始的位置(导航栏下方)。而大部分的下拉刷新控件,都是将自己放在UIScrollView的上方,起始y设置成负数,所以平时不会显示出来,只有下拉的时候才会出现,放开又会弹回去。然后在loading的时候,临时把contentInset增大,相当于把UIScrollView往下挤,于是下拉刷新的控件就会显示出来,然后刷新完成之后,再把contentInset改回原来的值,实现回弹的效果。

  问题:采用下拉刷新获取数据列表,请求完最后一页的数据后,不小心又进行了一次下拉操作,相当于又重新请求了一次,为了避免这种重复请求的现象,有什么方法?

  答:可以通过uni.startPullDownRefresh(),在onLoad中(即页面刚加载进来时)调用该API实现开始下拉功能;在下拉刷新函数中,调用后台接口获取每一页的数据,将每次获取的数据列表累加起来,直到请求到最后一页数据后,调用uni.stopPullDownRefresh(),关闭下拉刷新,这时,即便再次下拉,也不会请求到接口数据了。

(2)上拉加载:

  原理:

  • 滚定区域是给固定高度, 设置overflow-y:auto来实现
  • 触发条件:可视高度 + 滚动高度 >= 实际高度
    • 可视高度:通过dom的offsetHeight获取, 表示区域固定的高度; 但是更加推荐使用getBoundingClientRect()来获取高度, 因为使用前者会引起浏览器回流, 造成一些性能问题
    • 滚动高度:滚动事件中通过e.target.scrollTop获取, 表示滚动条距离顶部的px
    • 实际高度:通过dom的scrollHeight获取, 表示区域内所有内容的高度(包括滚定距离), 也就是实际的高度

  问题与回答同上。

 

posted @   黑使  阅读(14871)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示