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

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

最后

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

总结

以上所述是小编给大家介绍的基于vue2.0实现仿百度前端分页效果附实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:

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

转载注明出处:http://www.heiqu.com/3411c7f6885342e8e764164f81e5b85f.html