博客
关于我
基于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/

你可能感兴趣的文章
SNMP介绍及使用,超有用,建议收藏!
查看>>
HDU5589:Tree(莫队+01字典树)
查看>>
不停机替换线上代码? 你没听错,Arthas它能做到
查看>>
Python开发之序列化与反序列化:pickle、json模块使用详解
查看>>
采坑 - 字符串的 "" 与 pd.isnull()
查看>>
无序列表 - 链表
查看>>
Matplotlib绘制漫威英雄战力图,带你飞起来!
查看>>
机器学习是什么
查看>>
《小王子》里一些后知后觉的道理
查看>>
《你当像鸟飞往你的山》总结
查看>>
《我是猫》总结
查看>>
《抗糖化书》总结
查看>>
apache虚拟主机配置
查看>>
mcrypt加密以及解密过程
查看>>
go等待N个线程完成操作总结
查看>>
ReactJs入门教程-精华版
查看>>
Window环境下安装Redis 并 自启动Redis 及 Redis Desktop Manager
查看>>
Python 之网络式编程
查看>>
MySql5.5安装步骤及MySql_Front视图配置
查看>>
mybatis绑定错误-- Invalid bound statement (not found)
查看>>