uniapp vue mixin使用
- 这个mixin的翻版,主要用来分离处理列表数据逻辑
- 我用了覆写模式
- 创建mixin ListMoreDataMixin
// 由于没有超类的限制这里要判断下
function ____checkGetData(context) {
if (!context.getData || typeof context.getData !== 'function') {
throw new Error(
'使用[ListMoreDataMixin]必须实现getData函数')
}
}
export const ListMoreDataMixin = {
data() {
return {
listData: [], // 数据列表
page: 1, // 1
isLoading: false, // 是否在加载数据
}
},
methods: {
// 初始化数据
async initData() {
____checkGetData(this);
this.isLoading = true
const data = await this.getData();
this.listData = data;
this.isLoading = false;
},
// 上拉加载更多
async loadMore() {
____checkGetData(this);
this.isLoading = true;
this.page += 1;
const data = await this.getData();
if (!data.length) {
this.page--;
}
this.listData = [...this.listData, ...data];
this.isLoading = false;
},
// 下拉刷新
async onRefresh(done) {
____checkGetData(this);
this.page = 1;
this.listData = await this.getData();
done()
}
},
mounted() {
this.initData();
}
}
- 组件,这里用的uniapp
<myJobList @refresh="onRefresh" @loadMore="loadMore">
<myJobListItem v-for="it in listData" :data="it" v-key="it.id"></myJobListItem>
</myJobList>
<script>
import myJobListItem from 'widgets/my-job-list-item.vue';
import myJobList from 'widgets/my-job-list.vue';
import { ListMoreDataMixin } from 'list-more-data-mixin.js';
export default {
components: { myJobListItem, myJobList },
mixins: [ListMoreDataMixin],
methods: {
// ListMoreDataMixin
async getData() {
return new Promise(res => {
this.postHttp({
url: '/api/xxx',
data: {},
success(r) {
res(r.data);
}
});
});
},
}
};
</script>
- myJobList
<template>
<scroll-view
style="height: 100%;"
scroll-y="true"
scroll-with-animation="true"
refresher-enabled="true"
:refresher-triggered="isRefresh"
@refresherrefresh="refresherrefresh"
@scrolltolower="lower"
>
<slot></slot>
</scroll-view>
</template>
<script>
export default {
name: 'my-job-list',
data() {
return {
isRefresh: false
};
},
methods: {
lower(e) {
this.$emit('loadMore')
},
/**
* 下拉刷新
*/
refresherrefresh() {
this.isRefresh = true;
this.$emit('refresh', () => {
this.isRefresh = false;
});
}
}
};
</script>
uniapp vue mixin使用的更多相关文章
- vue.mixin与vue.extend
vue.mixin 全局注册一个混合,影响注册之后所有创建的每个 Vue 实例.谨慎使用全局混合对象,因为会影响到每个单独创建的 Vue 实例(包括第三方模板).大多数情况下,只应当应用于自定义选项, ...
- vue mixin使用
1.概述 将一些公用方法引入到不同的组件中. 2.引入方式 (1)全局引入 // 注册全局Mixin Vue.mixin({ methods: { $touch: function() { // 用以 ...
- Vue.mixin Vue.extend(Vue.component)的原理与区别
1.本文将讲述 方法 Vue.extend Vue.mixin 与 new Vue({mixins:[], extend:{}})的区别与原理 先回顾一下 Vue.mixin 官网如下描述: Vue. ...
- 理解Vue.mixin,带你正确的偷懒
关于Vue.mixin在vue官方文档中是这么解释的: 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.一个混入对象可以包含任意组件选项.当组件使用混入对象时,所有 ...
- 使用uni-app(Vue.js)创建运行微信小程序项目步骤
使用uni-app(Vue.js)开发微信小程序项目步骤 1. 新建一个uni-app项目 创建完成后的目录结构 2. 打开微信小程序开发工具端的端口调试功能 3. 运行创建的项目 效果
- uni-app,vue,react,Trao之缓存类封装
uni-app,vue,react,Trao之缓存类封装 一,介绍与需求 1.1,介绍 缓存主要分为如下几个 1.LocalStorage LocalStorage是永久性的本地缓存,存储在客户端的浏 ...
- 一、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-项目引言
项目文章索引 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入框扩展面板的 ...
- 【手把手教程】uniapp + vue 从0搭建仿微信App聊天应用:腾讯云TXIM即时通讯的最佳实践
基于uniapp + vue 实现仿微信App聊天应用实践,实现以下功能 1: 用户登陆 2: 聊天会话管理 3: 文本/图片/视频/定位消息收发 4: 贴图表情消息收发 5: 一对一语音视频在线通话 ...
- 【手把手教程】uniapp + vue 从0搭建仿斗鱼虎牙直播App:腾讯云MLVB移动直播实践连麦PK+带货
基于uniapp + vue 实现仿斗鱼虎牙腾讯云移动直播应用实践,实现以下功能 1: 用户登陆 2: 房间管理 3: 房间聊天 4: 直播美颜 5: Svga礼物动画 6: 一对一连麦观众 项目开发 ...
随机推荐
- 聊一聊Axios与登录机制
前言 因为HTTP是一个stateless的协议,服务器并不会保存任何关于状态数据. 所以需要登录功能让服务器在以后请求的过程中能够识别到你的身份,而不是每次发请求都要输入用户名和密码. 下面介绍一下 ...
- loj10007线段
题目描述 数轴上有 n 条线段,选取其中 k 条线段使得这 k 条线段两两没有重合部分,问 k 最大为多少. 输入格式 第一行为一个正整数 n: 在接下来的 n 行中,每行有 2 个数 a_i,b_i ...
- LOJ10132
在 Adera 的异时空中有一张地图.这张地图上有 N 个点,有 N-1 条双向边把它们连通起来.起初地图上没有任何异象石,在接下来的 M 个时刻中,每个时刻会发生以下三种类型的事件之一: 地图的某个 ...
- Web信息收集之搜索引擎-GoogleHacking
Web信息收集之搜索引擎-GoogleHacking 一.信息收集概述 二.Google Hacking 2.1 site 2.2 filetype 2.3 inurl 2.4 intitle 2.5 ...
- Grafana Prometheus系统监控Redis服务
Grafana Prometheus系统监控Redis服务 一.Grafana Prometheus系统监控Redis服务 1.1流程 1.2安装redis_exporter 1.3配置prometh ...
- size_t 、wchar_t和 ptrdiff_t
size_t在C语言中就有了. 它是一种"整型"类型,里面保存的是一个整数,就像int, long那样.这种整数用来记录一个大小(size).size_t的全称应该是size ty ...
- 3.centos 7执行service iptables save报错问题
1.报错 [root@localhost ~]# service iptables save The service command supports only basic LSB actions ( ...
- java中== equal hashcode 比较的区别
== 基本数据类型是进行数值的比较 引用数据类型比较的是两对象的地址值 实际上都是进行直接值的比较 equal(Object) Object型参数,任何类型的实参都可以传入,只有实参是一个字符串且内容 ...
- Codeforces Round #652 (Div. 2) D. TediousLee(dp)
题目链接:https://codeforces.com/contest/1369/problem/D 题意 最初有一个结点,衍生规则如下: 如果结点 $u$ 没有子结点,添加 $1$ 个子结点 如果结 ...
- 【uva 753】A Plug for UNIX(图论--网络流最大流 Dinic)
题意:有N个插头,M个设备和K种转换器.要求插的设备尽量多,问最少剩几个不匹配的设备. 解法:给读入的各种插头编个号,源点到设备.设备通过转换器到插头.插头到汇点各自建一条容量为1的边.跑一次最大流就 ...