博客
关于我
基于vue2.0实现仿百度前端分页效果(二)
阅读量:415 次
发布时间:2019-03-06

本文共 2279 字,大约阅读时间需要 7 分钟。

前言

上篇文章中,已经使用vue实现前端分页效果,这篇文章我们单独将分页抽离出来实现一个分页组件

先看实现效果图

代码实现

按照惯例,我们在冻手实现的时候还是先想一想vue实现组件的思路

1、需要提前设定哪些参数需要暴露出来给父组件传递

方法及参数说明属性 page-size 每页显示条目个数total 总条目数current-page 当前页数layout 布局 默认不显示 jumper,total事件change 当前页改变时触发

2、再一个就是涉及到的父子组件通信

这里主要通过props向子组件传递参数

在子组件中使用emit自定义事件返回数据给父组件

a.字符串数组形式props

props: ['title', 'likes', 'isPublished', 'commentIds', 'author']或者指定每个prop的值类型props: {  title: String,  likes: Number,  isPublished: Boolean,  commentIds: Array,  author: Object}

b.props验证

props: {    // 基础的类型检查 (`null` 匹配任何类型)    propA: Number,    // 多个可能的类型    propB: [String, Number],    // 必填的字符串    propC: {      type: String,      required: true    },    // 带有默认值的数字    propD: {      type: Number,      default: 100    },    // 带有默认值的对象    propE: {      type: Object,      // 对象或数组默认值必须从一个工厂函数获取      default: function () {        return { message: 'hello' }      }    },    // 自定义验证函数    propF: {      validator: function (value) {        // 这个值必须匹配下列字符串中的一个        return ['success', 'warning', 'danger'].indexOf(value) !== -1      }    }  }

使用props传递数据给子组件 ,子组件主要有三种形式来接收到父组件传递过来的参数

props字符串数组、指定每个prop值类型以及props验证,通常我们会使用props验证

分析完之后,接下来我们可以冻手实现了

1、这里我们用vue-cli先创建一个vue项目

安装vue-cli$npm install -g vue-cli创建vue项目$vue init webpack my-project项目运行$cd my-project$npm run dev

2、在components文件下创建一个Paging组件

3、在父组件中引入并使用组件

遇到的问题

1、在子组件中修改currentPage时报错

Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders

在使用组件时,传入的prop,被组件内部又做了一次修改

避免直接修改prop,因为当父组件重新呈现时,值将被覆盖

changePage:function(idx){  		if(idx!=this.currentPage && idx>0 && idx<=this.totalPage){  			this.currentPage = idx;	  		// 触发父组件事件  pageChange会转换成小写pagechange	  		this.$emit('change');			}  	}

解决

修改代码,通过emit传递curPage给父组件,让父组件修改

changePage:function(idx){  		if(idx!=this.currentPage && idx>0 && idx<=this.totalPage){	  		// 触发父组件事件  pageChange会转换成小写pagechange	  		this.$emit('change',{curPage:idx});			}  	}

父组件监听事件更新curPage

onPageChange:function(page){      this.curPage = page.curPage;    }

最后

以上就是分页组件的整个实现过程 ,其实只要搞清楚父子组件是如何传参的,以及我们实现一个组件需要暴露哪些参数给父组件,整个实现过程还是不难的

转载地址:http://qzsuz.baihongyu.com/

你可能感兴趣的文章
技巧收藏|10个JavaScript常用数组操作方法
查看>>
两种端到端通用目标检测方法
查看>>
云小课 | 守护网络安全不是问题,iptables的四表五链为你开启“八卦阵”
查看>>
LiteOS内核源码分析:任务栈信息
查看>>
23种设计模式之迭代器模式
查看>>
23种设计模式之组合模式
查看>>
mysql zip安装
查看>>
mysql修改密码
查看>>
virtualbox中 Kali Linux安装增强功能
查看>>
virtualbox中 Ubuntu挂载共享文件夹
查看>>
Python 内置函数笔记
查看>>
BootStrapTable 错误
查看>>
PHP 配置文件
查看>>
PHP 脚本不报错
查看>>
代码整洁之道小结
查看>>
悲观锁与乐观锁
查看>>
js new Date 创建时间默认是8点
查看>>
Python实现cmd命令连续执行
查看>>
罗马数字
查看>>
IO多路复用小故事
查看>>