基于vue2.0实现仿百度前端分页效果(二) (2)

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

<template> <div> <!-- 分页组件 --> <Paging :name="name" @change="onPageChange" :page-size="size" :total="total" layout="jumper,total" :current-page="curPage" /> </div> </template> <!-- Paging属性 page-size 每页显示条目个数 total 总条目数 current-page 当前页数 layout 布局 默认不显示 jumper,total Paging事件 change 当前页改变时触发 --> <script> import Paging from '@/components/Paging'; export default { name: 'Index', components:{ Paging }, data () { return { msg: 'hello', name:'阿健a', size:10, total:201, curPage:1 } }, methods:{ onPageChange:function(page){ this.curPage = page.curPage; } } } </script> 遇到的问题

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; } 最后

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxpdp.html