uniapp에서 풀업 로드 풀다운 새로 고침 구성 요소를 생성하는 방법에 대한 간략한 분석
uniapp中怎么创建上拉加载下拉刷新组件?下面本篇文章给大家分享一个uniapp 自定义上拉加载下拉刷新组件的实现方法,希望对大家有所帮助!
该组件是结合
uview
框架写的,主要结合了里面的u-loadmore
组件,可配置下拉刷新加载圈的颜色及背景色,暂无数据时的图等,突出的特点就是通过设置组件的高度,适配刘海屏iPhone,且支持嵌套在各种盒子中。
iPhone手机即使我们没有开启原生的下拉刷新,上拉加载,默认也可以进行下拉和上拉的动作,我们可以在配置文件中关闭 "(disableScroll": true )。
"globalStyle": { "disableScroll": true , "navigationStyle": "custom", // 隐藏系统导航栏 "navigationBarTextStyle": "white" },
组件最终实现效果图
了解整个页面的结构,计算准确的滚动组件的高度
配置项个别详解
//暂无数据的类型,就是根据不同的场景展示不同的暂无数据的图片, _type:{ default:'', type:String },
比如列表中暂无数据(_type:nodata)
消息列表中暂无数据(_type:nomsg)
//除了标题栏和状态栏以外的高度 otherHeight: { default: 0, type: Number },
otherHeight具体指页面中(不确定元素)的高度,不理解请看整个页面的结构图
组件使用
1、在根目录下创建components文件夹,定义全局组件,组件名建议xxx-功能.vue,例如safe-scrollbox.vue
2、注册为全局组件(page.json)
"easycom": { "autoscan": true, //是否开启自动扫描,开启后将会自动扫描符合components/组件名称/组件名称.vue目录结构的组件 "safe-(.*)": "@/components/safe-$1.vue", // 匹配components目录下组件名称/组件名称内的vue文件 "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue" },
3、页面内使用
<safe-scrollbox @lowerFun="lowerFun" @refreshFun="refreshFun" :otherHeight="otherHeight" _type="nodata" :list="sealListArr" :status="loadStatus" :isRefresh="isRefresh" bgColor="#fff"> <view class="seal-list-container" slot="contBox"> <sealList @showActionBox="showActionBox" :list="sealListArr" :loadings="loadings"></sealList> </view> </safe-scrollbox>
组件完整代码
<template> <!-- 滚动组件外层的框--> <view class=""> <!-- 滚动区域 --> <scroll-view class="scroll-component" :scroll-top="scrollTop" scroll-y="true" :style="{ height: `calc(100vh - ${statusBarHeight}px - ${navbarHeight}px - ${otherHeight}rpx - env(safe-area-inset-bottom) )`, }" :lower-threshold="150" :refresher-triggered="triggered" :refresher-enabled="true" refresher-default-style="none" :refresher-threshold="20" @refresherpulling="onPulling" @scrolltoupper="upper" @scrolltolower="lower" @scroll="scroll" @refresherrefresh="refresh" @refresherrestore="restore"> <!-- 下拉刷新提示 --> <u-loadmore status="loading" bgColor="#fff" v-if="triggered" :icon-color="activeColor" :color="activeColor" :load-text="refreshText" margin-top="30" margin-bottom="30"/> <slot name="contBox"> </slot> <!-- 暂无数据 --> <view class="no-data-box" v-if="_type&&list.length==0"> <image v-if="_type=='nodata'" mode="aspectFit"></image> <image src="../static/imgs/nofile.png" v-if="_type=='nofile'" mode="aspectFit"></image> <image src="../static/imgs/nomsg.png" v-if="_type=='nomsg'" mode="aspectFit"></image> <image src="../static/imgs/nospace.png" v-if="_type=='nospace'" mode="aspectFit"></image> <image src="../static/imgs/nofile.png" v-if="_type=='nofile'" mode="aspectFit"></image> </view> <!-- 上拉加载 --> <u-loadmore :status="status" :load-text="loadText" margin-top="30" margin-bottom="30"/> </scroll-view> <!-- 回到顶部 --> <view @tap="goTop" class="go-top" v-if="old.scrollTop>500"> <u-icon name="arrow-upward" color="#909399" size="56"></u-icon> </view> </view> </template>
import { mapGetters } from 'vuex'; export default { props: { // 这个数组结合暂无数据的类型主要是控制暂无数据模块的展示与隐藏 list: { default: [], type: Array }, //暂无数据的类型 _type: { default: '', type: String }, //控制上拉加载时提示 loadmore代表还可以继续上拉加载 nomore没有更多数据 loading 加载中 status: { default: 'loadmore', type: String }, //结合这个控制下拉刷新时加载圈的显示隐藏 isRefresh: { default: false, type: Boolean }, //除了标题栏和状态栏以外的高度 otherHeight: { default: 0, type: Number }, //下拉加载时加载圈的背景色 bgColor: { default: '', type: String }, //加载中,上拉加载时,暂无更多数据时所提示的文案 loadText: { default: { loadmore: '轻轻上拉获取更多数据', loading: '努力加载中...', nomore: '暂无更多数据' }, type: Object } }, computed: { triggered() { return this.isRefresh; }, ...mapGetters(['activeColor', 'statusBarHeight', 'navbarHeight', 'skeletonColor']) }, data() { return { old: { scrollTop: 0 }, scrollTop: 0, refreshText: { loading: '正在获取最新数据...' } //刷新文案 }; }, methods: { onPulling() { // 下拉 this.$emit('refreshFun'); // this.triggered = true; //下拉加载,先让其变true再变false才能关闭 }, // 自定义下拉刷新控件被下拉 refresh(e) {}, // 刷新重置 restore() { // this.triggered = 'restore'; // 需要重置 }, // 刷新终止 onAbort() { // console.log("onAbort"); }, upper: function(e) { console.log(e); }, // 上拉加载 lower: function(e) { // console.log('上拉加载') this.$emit('lowerFun'); // console.log(e) // this.status='loading' }, scroll: function(e) { this.old.scrollTop = e.detail.scrollTop; }, goTop: function(e) { this.scrollTop = this.old.scrollTop; this.$nextTick(() => { this.scrollTop = 0; }); } } };
.scroll-component { width: 750rpx; overflow-y: scroll; } /deep/ .u-loading-circle { display: flex; align-items: center; justify-content: center; height: 80rpx; width: 750rpx; } .go-top { position: fixed; bottom: 208rpx; right: 0; z-index: 2; background-color: red; width: 100rpx; height: 100rpx; display: flex; justify-content: center; align-items: center; background: #606266; border-radius: 50%; } .no-data-box { width: 750rpx; display: flex; align-items: center; justify-content: center; padding-top: 20%; margin-bottom: 10%; image { max-width: 600rpx; } }
推荐:《uniapp教程》
위 내용은 uniapp에서 풀업 로드 풀다운 새로 고침 구성 요소를 생성하는 방법에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 모바일 및 웹 플랫폼 용 디버깅 전략, Android Studio, Xcode 및 Chrome DevTools와 같은 도구 및 OS 및 성능 최적화 전반에 걸쳐 일관된 결과를위한 기술을 강조 표시합니다.

이 기사는 HBuilderx, WeChat 개발자 도구 및 Chrome Devtools와 같은 도구에 중점을 둔 UniAPP 개발을위한 디버깅 도구 및 모범 사례에 대해 설명합니다.

이 기사는 여러 플랫폼에서 UniAPP 응용 프로그램에 대한 엔드 투 엔드 테스트에 대해 설명합니다. 테스트 시나리오 정의, Appium 및 Cypress와 같은 도구 선택, 환경 설정, 테스트 작성 및 실행, 결과 분석 및 Integrat을 다룹니다.

이 기사는 장치, 통합, 기능, UI/UX, 성능, 크로스 플랫폼 및 보안 테스트를 포함한 UniAPP 응용 프로그램에 대한 다양한 테스트 유형에 대해 설명합니다. 또한 크로스 플랫폼 호환성을 보장하고 JES와 같은 도구를 권장합니다.

이 기사는 과도한 글로벌 데이터 사용 및 비효율적 인 데이터 바인딩과 같은 UniAPP 개발의 일반적인 성능 방지 방지에 대해 설명하며, 더 나은 앱 성능을 위해 이러한 문제를 식별하고 완화하는 전략을 제공합니다.

이 기사는 프로파일 링 도구를 사용하여 UniAPP의 성능 병목 현상을 식별하고 해결하고 설정, 데이터 분석 및 최적화에 중점을 둡니다.

이 기사는 UNIAPP에서 네트워크 요청을 최적화하고 대기 시간을 줄이고 캐싱 구현 및 모니터링 도구를 사용하여 응용 프로그램 성능을 향상시키는 전략에 대해 설명합니다.

이 기사에서는 압축, 반응 형 디자인, 게으른로드, 캐싱 및 Webp 형식 사용을 통해 웹 성능을 향상시키기 위해 UniAPP의 이미지 최적화에 대해 설명합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
