博客
关于我
基于vue2.0实现仿百度前端分页效果(二)
阅读量:425 次
发布时间: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/

你可能感兴趣的文章
LiveGBS user/save 逻辑缺陷漏洞复现(CNVD-2023-72138)
查看>>
localhost:5000在MacOS V12(蒙特利)中不可用
查看>>
logstash mysql 准实时同步到 elasticsearch
查看>>
Luogu2973:[USACO10HOL]赶小猪
查看>>
mabatis 中出现&lt; 以及&gt; 代表什么意思?
查看>>
Mac book pro打开docker出现The data couldn’t be read because it is missing
查看>>
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>