vue 使用vant插件做tabs切换和无限加载功能的实现


Posted in Javascript onNovember 04, 2020

样例:

vue 使用vant插件做tabs切换和无限加载功能的实现

1.创建vue项目,不再详述

2.引入vant

之前用过很多插件做这个功能,但是效果都不尽人意,出现各种问题,直到遇到vant这个插件,完美的解决了这些小问题,如有问题,欢迎联系我

安装依赖

npm i vant -S

在main.js中引入

import Vant from 'vant';
import 'vant/lib/index.css';
Vue.use(Vant);

3.在页面中使用

官方写的比我写的好多了,大家可以借鉴,看源代码可能比官方给的文档更直观

官方文档

我在文件中的使用,没有使用下拉刷新的功能,大家可以直接看官网代码:

<template>
 <div class="myOffice">
  <van-tabs v-model="active">
    <van-tab title="预受理">
     <van-list v-model="loading1" :finished="finished1" finished-text="没有更多了" @load="onLoad1" :error.sync="error1" error-text="请求失败,点击重新加载">
      <van-cell v-for="(item,index) in list1" :key="item.PROJID" @click="handle('1',index)">
       <div class="num">{{item.PROJID}}</div>
       <div class="name">{{item.SERVICENAME}}</div>
       <div class="cleatFloat detailInfo">
        <div class="floatLeft deptName">
         <i></i>
         <span>{{item.DEPTNAME}}</span>
        </div>
        <div class="floatRight time">
         <i></i>
         <span>{{item.ACCEPTTIME.slice(0,item.ACCEPTTIME.length-2)}}</span>
        </div>
       </div>
      </van-cell>
     </van-list>
    </van-tab>
    <van-tab title="正在处理">
     <van-list v-model="loading2" :finished="finished2" finished-text="没有更多了" @load="onLoad2" :error.sync="error2" error-text="请求失败,点击重新加载">
      <van-cell v-for="(item,index) in list2" :key="item.flowroleid" @click="handle('2',index)">
       <div class="num">{{item.PROJID}}</div>
       <div class="name">{{item.SERVICENAME}}</div>
       <div class="cleatFloat detailInfo">
        <div class="floatLeft deptName">
         <i></i>
         <span>{{item.DEPTNAME}}</span>
        </div>
        <div class="floatRight time">
         <i></i>
         <span>{{item.ACCEPTTIME.slice(0,item.ACCEPTTIME.length-2)}}</span>
        </div>
       </div>
      </van-cell>
     </van-list>
    </van-tab>
   </van-tabs>
 </div>
</template>
<script>
export default {
 name:'MyOffice',
 data(){
  return {
   active: 0,
   list1: [],
   loading1: false,
   finished1: false,
   error1: false,
   page1: 1,
   list2: [],
   loading2: false,
   finished2: false,
   error2: false,
   page2: 1
  }
 },
 methods:{
  onLoad1(){
   var _vm = this;
   _vm.param.pageNo = _vm.page1;
   _vm.param.handleState = '1';
   _vm.axios.post('*************',_vm.param).then(response => {
    _vm.page1 ++;
    var moreList = response.data.data.data;
    if(moreList){
     _vm.list1.push(...moreList);
     _vm.loading1 = false;
     _vm.finished1 = false;
    }else{
     _vm.loading1 = false;
     _vm.finished1 = true;
    }
   }).catch(error => {
    _vm.error1 = true;
    _vm.loading1 = false;
   })
  },
  onLoad2(){
   var _vm = this;
   _vm.param.pageNo = _vm.page2;
   _vm.param.handleState = '2';
   _vm.axios.post('******************',_vm.param).then(response => {
    _vm.page2 ++;
    var moreList = response.data.data.data;
    if(moreList){
     _vm.list2.push(...moreList);
     _vm.loading2 = false;
     _vm.finished2 = false;
    }else{
     _vm.loading2 = false;
     _vm.finished2 = true;
    }
   }).catch(error => {
    console.log(error);
    _vm.error2 = true;
    _vm.loading2 = false;
   })
  },
  handle(type,index){
   this.$router.push('/itemDetail?type=' + type + '&index=' + index);
  }
 }
}
</script>

补充知识:Vant 在vue中 按需引入和全部加载

1. 问题描述:

在vue-cli 2.x 脚手架中练习使用vant组件库, 在main.js用于组件的时候 报错 Vant is not defined

因为我是测试练习vant的 ; demo分为 全部加载 和按需加载两种方式

按需加载

1.首先搭建vue脚手架,

2.下载vant

3. 下载 babel-plugin-import (按需加载使用)

3.当下载好了以后,就可以在 .vue文件中使用了

下载vant: cnpm install vant -S

下载babel-plugin-import: cnpm install babel-plugin-import -S

首先引入: (官方文档):

import Vue from 'vue';
import { Button } from 'vant';

Vue.use(Button);

我的写法:

<template>
 <van-popup v-model="show" position="top" :style="{ height: '30%' }" />
  <van-cell-group>
   <van-cell title="单元格" value="内容" />
   <van-cell title="单元格" value="内容" label="描述信息" />
  </van-cell-group>
</template>
<script>
import { Popup } from "vant";
import { Cell, CellGroup } from "vant";

components:{
  [Cell.name]: Cell,
  [CellGroup.name]: CellGroup,
}
</script>

大家可以在计算属性中打印一下你引入的组件,看看里面有什么了

全部加载

第一步: 下载vue脚手架

vue init webpack 项目名;

第二步: 下载vant

cnpm install vant -S

在main.js 中 以引入并使用

import Vant from 'vant'
import 'vant/lib/index.css'

Vue.use(Vant);

-未修改之前的 .babelrc 文件

{
 "presets": [
  ["env", {
   "modules": false,
   "targets": {
    "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
   }
  }],
  "stage-2"
 ],
 "plugins": ["transform-vue-jsx", "transform-runtime"]
}

第三步: 安装babel-plugin-import (这部是按需加载的时候需要用到的,如果你全部引入了 就不需要)

cnpm install babel-plugin-import -S

-在 下载 babel-plugin-import 后修改 .babelrc的文件

{
 "presets": [
  ["env", {
   "modules": false,
   "targets": {
    "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
   }
  }],
  "stage-2"
 ],
 "plugins": ["transform-vue-jsx", "transform-runtime", ["import",{"libraryName":"vant","style":true}]],
 "env": {
  "test": {
   "presets": ["env", "stage-2"],
   "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"]
  }
 }
}

第四.如果你安装了babel-plugin-import 这个 然后需要把这个卸载掉, 然后重新项目; 在你卸载掉babel-plugin-import 这个的时候 .babelrc这个文件也要恢复到一开始没修改的样子偶(就是上面的''未修改之前的 .babelrc 文件)

cnpm uninstall babel-plugin-import -S

接下来重启项目就应该可以了。

以上这篇vue 使用vant插件做tabs切换和无限加载功能的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript Throttle &amp; Debounce应用介绍
Mar 19 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
Sep 17 Javascript
简介alert()与console.log()的不同
Aug 26 Javascript
JavaScript:Array类型全面解析
May 19 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
Jun 06 Javascript
node.js 中国天气预报 简单实现
Jun 06 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
Nov 07 Javascript
JS实现根据用户输入分钟进行倒计时功能
Nov 14 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
Dec 29 Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 Javascript
Javascript实现时间倒计时功能
Nov 17 Javascript
深入理解vue-class-component源码阅读
Feb 18 Javascript
Vue获取微博授权URL代码实例
Nov 04 #Javascript
基于vue实现微博三方登录流程解析
Nov 04 #Javascript
Javascript执行上下文顺序的深入讲解
Nov 04 #Javascript
解决vant中 tab栏遇到的坑 van-tabs
Nov 04 #Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
Nov 04 #Javascript
基于js实现的图片拖拽排序源码实例
Nov 04 #Javascript
在vant中使用时间选择器和popup弹出层的操作
Nov 04 #Javascript
You might like
默默小谈PHP&amp;MYSQL分页原理及实现
2007/01/02 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
浅析Python多线程下的变量问题
2015/04/28 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
学python安装的软件总结
2019/10/12 Python
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
老教师工作总结的自我评价
2013/09/27 职场文书
委托书范本
2014/04/02 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
母亲节感言
2015/08/03 职场文书
Python源码解析之List
2021/05/21 Python
OpenFeign实现远程调用
2022/08/14 Java/Android