组件化设计&实现一个分页组件

React实现分页组件(简短版) React的组件的确很方便,十分简短地实现了分页。百度一下到的React分页十分长,所以我自己写了个,虽然不是真正意义上的三行,不过也差不多了。 这是我百度到的分页代码实现:http://blog.youkuaiyun.com/xiaozhuxmen/article/details/51461269 http://www.cnblogs.com/vichily/p/6432558.html http:/ 阅读详情

​ 随着前端三大框架(Vue、React、Angular)的发展,相应的也会有element-ui、ant-design等成熟的UI组件库的出现,很大程度上提高了前端开发的效率。如果提供的组件不符合业务要求的时候,需要我们自己动手实现一个合适的组件,那么,为什么要开发组件,什么是组件化思想,实现一个组件的时候我们需要考虑哪些问题?

  • 为什么要开发组件

    • 组件化是对实现的分层,是更有效的代码组合方式(重复使用/一个地方使用)
    • 组件化有利于代码的重组、优化、重构和维护
    • 组件化有利于单元测试
  • 组件化思想

    ​ 简单来说,组件就是将页面中某一部分UI和对应的功能抽离出来,并封装为一个独立的整体,无论放在哪个位置,都可以使用UI和功能,复用性和灵活性较强。组件设计包括以下几个原则:

    • 功能单一,短小精悍
    • 避免太多参数
    • 避免暴露组件内部实现
    • 避免直接操作DOM
    • 入口处检查参数的有效性,出口处检查返回的正确性
    • 引用透明,无副作用
    • 充分分隔变化的部分
  • 怎么实现一个优秀的组件

    实现组件之前我们需要考虑这样几个问题

    • 组件是否还可以拆分,是否还需要拆分,合理划分颗粒度
    • 组件的依赖是够可以缩减
    • 组件是否对其他组件造成侵入(组件封装性不够或自身越界操作)
    • 组件是否可复用于其他类似场景
    • 其他人使用该组件时,是否满足简单上手,接口设计符合大众习惯的条件
    • 业务不需要这个功能时,是否方便清除

    接下来我们以实现一个分页组件为例,来讨论实现一个组件的详细过程

    ​ 分页组件需具备以下功能:合理的动态显示页码;点击某一个页码,响应的会去请求对应数据并展示至页面上;点击前一页,后一页可实现相应的翻页操作;当前页码为第一页,则前一页无法点击,当前页码为最后一页,则无法点击下一页。

    ​ 现在我们开始考虑这样几个问题,组件入口(属性)和组件出口(事件)、可复用、UI和功能

    ​ 在这里插入图片描述

    要实现上图这样的一个分页组件,其实可以进一步拆分,拆分为两个部分,上面的列表展示和下面的分页页码,这样可以满足复用性。

    分页页码的实现,需要当前页码(currentPage)、开始页码(startPage)、分组页码(groupCount)、总页数(totalPage)等属性(组件入口);需要页码跳转(pageCallbackFn)事件(组件出口)。

    展示列表的实现,需要列表数据(dataList),当点击分页页码执行页码变化操作时,展示列表需要有响应的变化,所以,我们可以将页码跳转方法定义在分页页码的父组件中,这样,我们的组件结构则基本形成,Pagecontainer (分页组件整体)的子组件为Pagecomponent(分页页码)。

    ​ 分页展示核心思想:当总页数不大于10时,显示全部页码;当总页数大于10时,始终显示首尾页码,当当前页码大于分组页码时,显示省略号。

    • 初始化项目

      //安装构建工具,如已安装,可跳过该步骤
      npm install -g create-react-app
      //初始化项目
      create-react-app study_code
      

      初始化项目后,可删除无用代码,添加新的文件和目录,我的项目目录如下图所示

      在这里插入图片描述

    • 本地json模拟数据

      项目目录下新建tsconfig.json文件,并添加一下代码

      [
        {"id":1,"name":"hello1"},
        {"id":2,"name":"hello2"},
        {"id":3,"name":"hello3"},
        {"id":4,"name":"hello4"},
        {"id":5,"name":"hello5"},
        {"id":6,"name":"hello6"},
        {"id":7,"name":"hello7"},
        {"id":8,"name":"hello8"},
        {"id":9,"name":"hello9"},
        {"id":10,"name":"hello10"},
        {"id":11,"name":"hello11"},
        {"id":12,"name":"hello12"},
        {"id":13,"name":"hello13"},
        {"id":14,"name":"hello14"}
      ]
      
    • Pagecontainer

      新建Pagecontainer.js文件,并添加以下代码

      import React, {Component} from 'react'
      import Pagecomponent from './pageComponent.js'
      import data from '../mock/tsconfig.json'
      
      class Pagecontainer extends Component {
          constructor() {
              super();
              this.state = {
                  dataList:[],
                  pageConfig: {
                      totalPage: data.length //总条数
                  }
              }
              this.getCurrentPage = this.getCurrentPage.bind(this)
          }
          getCurrentPage(currentPage) {
              this.setState({
                  dataList:data[currentPage-1].name
              })
          }
          render() {
              return (
                  <div>
                      <div style={{padding:'0 300px'}}>
                          {this.state.dataList}
                      </div>
                      <Pagecomponent pageConfig={this.state.pageConfig}
                                     pageCallbackFn={this.getCurrentPage}/>
                  </div>
      
              )
          }
      }
      export default Pagecontainer
      
    • Pagecomponent

      新建Pagecomponent.js文件,并添加以下代码

      import React, {Component} from 'react'
      import './pageComponent.css'
      
      class Pagecomponent extends Component {
          constructor(props) {
              super(props)
              this.state = {
                  currentPage: 1, //当前页码
                  groupCount: 5, //页码分组,显示7个页码,其余用省略号显示
                  startPage: 1,  //分组开始页码
                  totalPage:1 //总页数
              }
              this.createPage = this.createPage.bind(this)
          }
      
          componentDidMount() {
              this.setState({
                  totalPage: this.props.pageConfig.totalPage
              })
              this.props.pageCallbackFn(this.state.currentPage)
          }
      
          createPage() {
              //const {totalPage} = this.props.pageConfig;
              const {currentPage, groupCount, startPage,totalPage} = this.state;
              let pages = []
              //上一页
              pages.push(<li className={currentPage === 1 ? "nomore" : null} onClick={this.prePageHandeler.bind(this)}
                             key={0}>
                  上一页</li>)
      
              if (totalPage <= 10) {
                  /*总页码小于等于10时,全部显示出来*/
                  for (let i = 1; i <= totalPage; i++) {
                      pages.push(<li key={i} onClick={this.pageClick.bind(this, i)}
                                     className={currentPage === i ? "activePage" : null}>{i}</li>)
                  }
              } else {
                  /*总页码大于10时,部分显示*/
      
                  //第一页
                  pages.push(<li className={currentPage === 1 ? "activePage" : null} key={1}
                                 onClick={this.pageClick.bind(this, 1)}>1</li>)
      
                  let pageLength = 0;
                  if (groupCount + startPage > totalPage) {
                      pageLength = totalPage
                  } else {
                      pageLength = groupCount + startPage;
                  }
                  //前面省略号(当当前页码比分组的页码大时显示省略号)
                  if (currentPage >= groupCount) {
                      pages.push(<li className="" key={-1}>···</li>)
                  }
                  //非第一页和最后一页显示
                  for (let i = startPage; i < pageLength; i++) {
                      if (i <= totalPage - 1 && i > 1) {
                          pages.push(<li className={currentPage === i ? "activePage" : null} key={i}
                                         onClick={this.pageClick.bind(this, i)}>{i}</li>)
                      }
                  }
                  //后面省略号
                  if (totalPage - startPage >= groupCount + 1) {
                      pages.push(<li className="" key={-2}>···</li>)
                  }
                  //最后一页
                  pages.push(<li className={currentPage === totalPage ? "activePage" : null} key={totalPage}
                                 onClick={this.pageClick.bind(this, totalPage)}>{totalPage}</li>)
              }
              //下一页
              pages.push(<li className={currentPage === totalPage ? "nomore" : null}
                             onClick={this.nextPageHandeler.bind(this)}
                             key={totalPage + 1}>下一页</li>)
              return pages;
      
          }
      
          //页码点击
          pageClick(currentPage) {
              const {groupCount} = this.state
              const getCurrentPage = this.props.pageCallbackFn;
              //当 当前页码 大于 分组的页码 时,使 当前页 前面 显示 两个页码
              if (currentPage >= groupCount) {
                  this.setState({
                      startPage: currentPage - 2,
                  })
              }
              if (currentPage < groupCount) {
                  this.setState({
                      startPage: 1,
                  })
              }
              //第一页时重新设置分组的起始页
              if (currentPage === 1) {
                  this.setState({
                      startPage: 1,
                  })
              }
              this.setState({
                  currentPage
              })
              //将当前页码返回父组件
              getCurrentPage(currentPage)
          }
      
          //上一页事件
          prePageHandeler() {
              let {currentPage} = this.state
              if (--currentPage === 0) {
                  return false;
              }
              this.pageClick(currentPage)
          }
      
          //下一页事件
          nextPageHandeler() {
              let {currentPage,totalPage} = this.state
              if (++currentPage > totalPage) {
                  return false;
              }
              this.pageClick(currentPage);
          }
      
          //根据输入框有效值跳转相应页码
          jumpTo(e){
              let val = parseInt(e.target.value);
              if(!val){
                  return false;
              }
              this.pageClick(val);
              e.target.value = '';
          }
      
          render() {
              const pageList = this.createPage();
              return (
                  <ul className="page-container">
                      {pageList}
                      <span>总共{this.props.pageConfig.totalPage}条,共{this.state.totalPage}页,到第</span>
                      <input className="jumpTo" type="text" onBlur={this.jumpTo.bind(this)}/>
                      <span>页</span>
                  </ul>
              )
          }
      }
      
      export default Pagecomponent
      

      新建Pagecomponent.css文件,并添加以下代码

      .page-container:after {
          content: '.';
          display: block;
          height: 0;
          overflow: hidden;
          clear: both;
      }
      .page-container {
          zoom: 1;
          line-height:30px;
      }
      
      .page-container li {
          list-style: none;
          float: left;
          padding: 0px 8px;
          cursor: pointer;
          border: 1px solid #ccc;
          height: 28px;
          line-height: 28px;
          margin-right: 8px;
      }
      
      .page-container li:last-child {
          margin-right: 0px;
      }
      
      /*当前页样式*/
      .activePage {
          color: #fff !important;
          background: #2292bd;
          border-color: #2292bd !important;
      }
      
      /*没有上一页和下一页时样式*/
      .nomore {
          color: #b5b5b5 !important;
          cursor: not-allowed !important;
      }
      
      .jumpTo{
          width:30px;
      }
      
    • APP.js中引入Pagecontainer 组件

      import React, { Component } from 'react';
      import './App.css';
      import PageContainer from './pagination/pageContainer.js'
      
      class App extends Component {
        render() {
          return <PageContainer></PageContainer>
        }
      }
      
      export default App;
      
      

      执行npm start即可运行项目,查看实际效果

vue实现通用分页控件,支持前端分页、后端分页。 如果是后端做分页的话,就传递count属性值这个属性代表总数据量,需要用来计算总页数如果是前端做分页,就传递itemList属性值,这个属性表示总数据数组,根据这个数组的长度可以计算页数,根据页码可以对数组进行截取并把截取的单页数据通过自定义事件传递给父组件,父组件更新列表数据渲染itemList: {//数据列表},count: {//有值则分页功能后端实现},})通过自定义事件可以把页码或者是分页后的数据传递给父组件。 阅读详情

相关推荐

Vue组件化开发:如何将一个大型应用拆分成多个小组件

组件化开发是一种将用户界面拆分为独立、可复用的组件的开发方式。每个组件负责特定的功能或视图部分,组件之间通过 props 和 events 进行通信。这种方式不仅提高了代码的可维护性,还使得团队协作更加高效。在 Vue 中,组件是一个独立的单元,包含了自己的模板、逻辑和样式。通过组合这些组件,我们可以构建出复杂的用户界面。组件化开发是 Vue 应用开发的核心思想之一。通过将一个大型应用拆分成多个小组件,我们可以提高代码的复用性、可维护性和团队协作效率。

lb320的博客 1564

分页组件的使用

时调用请求函数,获取到第一页数据(根据每页多少条、当前第几页)---->分页组件根据相应的参数(数据总条数、刚进入是显示到第几页、显示哪些按钮)加载----->点击上一页或下一页按钮时根据当前第几页获取数据---->改变每页显示条数时,回到第一页,根据当前第一页、每页显示多少条请求数据。是组件布局,显示总条数、每页几条的选择器、上一页、当前页、下一页、跳转到第几页。改变时会触发的事件,也就是点击上一页或者下一页时,参数的值就是当前第几页;,函数的参数是在每页多少条的情况下,需要第几页的数据;......

AnnGreen的博客 2041

用 Vue.js 实现前端的分页组件

本文旨在指导读者使用 Vue.js 框架开发一个功能完善的前端分页组件。我们将覆盖从基础概念到实际实现的完整流程,包括组件设计、状态管理、事件处理和样式定制等内容。介绍分页组件的核心概念分析分页组件的设计思路详细实现步骤和代码解析探讨实际应用场景和优化方案总结和扩展思考分页(Pagination):将大量数据分割成多个页面显示的技术当前页(Current Page):用户当前正在查看的页面页大小(Page Size):每页显示的数据条目数总页数(Total Pages)

小白菜的博客 1238

Vue3 element-ui实现Pagination分页组件--封装分页

而且它自己里面已经封装的很好了,只需要简单的调用作用在标签上的函数就能够实现平滑的滚动,用起来非常的简便。假分页:一开始从后端发送请求获取所有的数据,前端通过在组件的方式对数据进行分页,再点击分页的按钮的时候,数据其实已经在浏览器缓存的缓存中了,不需要再请求后端接口。3、注册本地组件,并且因为在添加标签的时候,绑定的有属性和方法,所以要对属性进行声明,以及方法的实现。真分页:当你目前在首页的时候,点击“第二页”或“下一页”的时候,会重新向后端发送请求,请求第二页的数据。

coinisi_li的博客 1万+

通用分页组件深度解析与实践

本文还有配套的精品资源,点击获取 简介:分页组件作为网页和应用程序中用于高效浏览和管理信息的关键部分,特别在大数据量场景中不可或缺。本组件具有高度可配置性,能够适应各种设计风格和功能需求。本文将深入探讨分页组件的基础原理、结构组成、源码解析、可配置性参数以及性能优化方法。分页组件的实现涉及前端展示、交互逻辑和后端数据处理。了解并实践这些知识点将有助于开发人员提升开发技能,并...

weixin_36277197的博客 676

React 分页组件简易实现指南

在React中,状态(state)是一个组件内部的私有变量,它可以保存数据并驱动组件根据数据的变化进行更新。状态是组件动态交互的核心,而状态的正确管理则是高效React应用的关键。定义状态时,我们会使用组件的构造函数(constructor)来初始化状态。例如,对于分页组件,我们可能需要一个状态来保存当前显示的页码:更新状态时,不能直接修改this.state,而应该使用setState方法,它会进行局部更新,并且可触发组件的重新渲染。

weixin_35899324的博客 769

利用Bootstrap的分页组件实现分页效果

利用Bootstrap的分页组件实现分页效果

昊虹AI笔记 6240

构建高效简洁的Web分页组件

分页组件是Web开发中不可或缺的一部分,它让开发者能够轻松地管理和展示大量数据。一个高效的分页组件不仅可以提升用户体验,还能改善网站的性能和SEO表现。分页组件核心功能主要包括:- 数据分块:将数据切分成多个页面,用户可逐页浏览。- 导航控制:提供前后翻页、跳转到特定页等导航按钮。- 状态显示:显示当前页、总页数或总数据量等信息。简单分页组件的设计理念主要围绕着用户体验、代码可维护性和性能效率。首先,组件要易于理解和使用,提供一致的用户交互,减少学习成本。

weixin_29323977的博客 1340

分页组件---svelte

本文介绍了如何使用 Svelte 构建一个灵活且功能完备的分页组件。通过实现总条数展示、每页条数选择、页码跳转、上下页按钮以及输入框跳转等功能,极大增强了用户体验。文章详细解析了代码实现,包括如何通过动态渲染页码、处理每页条数的选择、管理跳转页码的逻辑,并展示了如何用 Svelte 的响应式特性高效处理数据更新

寻觅~流光的博客 869

车载测试面试题总结

首先确认是什么问题,如果是测试软件的问题就先确定自己的测试方法有没有问题,如果没有问题,那就是测试软件的问题,这时候就需要提bug 进行跟踪,(比如BCM测试的时候,先明确测试的输入,对输入)进行需求分析,然后设计测试用例,进行用例评审,评审完执行测试用例形成最终的版本,台架分为:hil(黑尔)台架,单个控制器的台架、整车台架、车身台架、动力系统台架等,主要验证其功能,或者实车无法满足的测试环境。这个人不可能一直,点击几千次或者多少次几个小时连续点击,人不可能一直在点。因为要模拟一下这个稳定性,

woaxiaoqing的博客 7813

Pluto SDR新手避坑指南:从环境配置到第一个MATLAB收发程序(附完整代码)

本文为Pluto SDR新手提供全面的避坑指南,从硬件连接到MATLAB环境配置,再到第一个信号收发程序的实现。详细介绍了驱动安装、常见问题排查以及关键参数设置,帮助用户快速上手软件定义无线电(SDR)技术,并附有完整代码示例。

weixin_33168937的博客 324

分页组件工具类

package com.mischen.common.core.page; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @类功能说明: 分页组件. * @类修改者: * @修改日期: * @修改说明: * @作...

mischen520的博客 868

高温环境下RS485通信故障分析与MOS管解决方案

RS485通信作为工业控制领域的基础总线技术,其可靠性直接影响系统稳定性。在高温等恶劣环境下,传统三极管开关电路会因温度特性导致通信故障。通过分析三极管Ube电压随温度变化的特性,揭示了电路失效的物理原理。相比之下,MOS管作为电压控制型器件,具有温度稳定性好、功耗低等优势,更适合工业环境应用。本文通过一个发动机舱内RS485通信故障的实际案例,详细对比了三极管与MOS管在高温环境下的性能差异,并给出了具体的电路改进方案。该案例对工业通信接口设计具有普遍参考价值,特别适用于需要应对高温、振动等挑战性环境的硬

weixin_42612405的博客 405

vue分页组件实现

子组件中: &lt;template&gt; &lt;div class="page-bar"&gt; &lt;ul class="pageul"&gt; &lt;li&gt; &lt;a @click="sendmessage('reduce')" class="page"&gt;上一页&lt;/a&gt; &lt;/li&gt; ...

qq_44242030的博客 291

【Cadence】stb仿真和ac仿真——以一个简单的全差分反相放大器仿真为例

最近在补一些仿真方法学的问题,以及一些一直以来都有点模糊的概念,简单记录一下。搭建一个以两个CMOS反相器构成的全差分放大器(28nm工艺,PMOS和NMOS尺寸一致)激励的设置方便共模和差模仿真用同一个TB(这里有一个问题:这个放大器需要在开环下仿真还是闭环下?哪些放大器应用在开环,哪些闭环?这种应用场景不同会导致需要仿真得到开环还是闭环增益,或者环路增益?(我知道放大器在设计的时候肯定都是闭环应用的多,但是什么时候没必要闭环应用?光验证ac和stb仿真是否一样的话有必要有回路吗?

weixin_44951108的博客 5万+

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.5 RTC设备编写与实现

4. Linux kernel RTC子系统goldfish_rtc driver分析。电脑,会需要时间,还比如 我们的手机、平板,都需要时间;驱动基本就是应用层需要什么数据你给什么数据就行,基本必须实现的就是。3.2 Linux kernel RTC 设备描述符讲解。中看到他的具体实现,也可以根据他的寄存器描述直接在。5. 将驱动添加进kernel和测试RTC驱动。系统来说,时间是一个非常重要的功能;之类的函数接口,接下来我们就开始讲解如何写。,所以我们直接移植设备树即可。,他的寄存器很简单,你可以从。

DSMGUOGUO的博客 568

手写vue分页组件

记录 &lt;template&gt; &lt;div class="page"&gt; &lt;nav aria-label="Page navigation" style="text-align:center;"&gt; &lt;ul class="pagination"&gt; &lt;li @click="prePage" :class="pageNo&lt;=1?'disabled':''"&gt; &lt;a a

gswwxyhk的博客 302

2024届数字IC秋招-华为机试-数字芯片-笔试真题和答案(五)(含2022年和2023年)

此部分包含华为机试真题,方向是数字芯片,内容详细包括设计、验证、后端等,大部分题目给出参考答案。华为机试都是从题库里抽题目,所以这些题目还是很有参考性的,甚至是完全一样,可以搜到的。(题目内容较多,将分开编写几个文章)

qq_42135020的博客 2081

Ink分页组件:大量数据的分批显示技术

在命令行界面(CLI)应用中处理大量数据时,如何优雅地实现分页显示是一个常见的技术挑战。Ink作为React的命令行渲染器,提供了强大的组件化能力来解决这一问题。本文将深入探讨如何使用Ink构建高效的分页组件,处理大规模数据集的显示需求。 ## 为什么需要命令行分页? 在CLI工具开发中,我们经常遇到以下场景: - **日志查看器**:显示数千行的应用日志 - **数据库查询结果**:展示大...

gitblog_00828的博客 898

【行业解决方案篇十五】【DeepSeek物流优化:车辆路径规划算法】

写完这篇技术解析,突然想起那位多绕150公里的王师傅——现在他的车载平板会实时显示"路径健康度",当偏离最优路线超过5%就自动报警。从节约算法到深度强化学习,从三维装载到时序预测,这些技术最终化作每辆货车少烧的1升柴油,每个快递小哥早回家的1小时。最后说个浪漫的事:系统曾为某偏远山区规划出一条穿越枫叶林的配送路线,不仅节省23公里,还成了网红打卡路线。原来物流优化的尽头,不仅是冰冷的数学,还有人间烟火气的温度。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 292

零基础教你学RDMA驱动开发--第8篇:队列对(QP)、完成队列(CQ)与工作请求(WR)机制剖析

本文深入剖析了RDMA(远程直接内存访问)中的核心机制:队列对(QP)、完成队列(CQ)和工作请求(WR)。QP作为通信端点包含发送队列(SQ)和接收队列(RQ);WR是用户提交的操作指令,转换为工作队列元素(WQE)后由网卡异步执行;CQ则提供完成通知机制。文章详细介绍了三者的协作原理,包括QP状态机、WR提交方式、CQ轮询机制,以及关键的信号控制技术(Signaled Mode)来优化性能。同时对比了SEND/RECV和RDMA WRITE两种模式的差异,提供了调试技巧和最佳实践。这些机制共同构成了RD

amy_mhd的博客 156

试着开发一个Pagination组件

开发一个Pagination组件玩玩,里面有所有思路和代码

随便写写 834

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

React笔记(五) 组件化与简单封装

组件化与简单封装

qq_39535240的博客 1839

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VUE3(二十三)自定义分页组件Pagination

刚开始使用vue3写博客的时候,其相关配套的UI库并没有正式发布,但是我还要用,所以这里我自定义了一个分页组件:最后效果如下图所示: 上代码: Pagination.vue &lt;template&gt; &lt;!-- 自定义分页组件 --&gt; &lt;div class="page-bar"&gt; &lt;ul&gt; &lt;li class="first"&gt; &lt;!-- &lt;span&gt;共{{dataNum}}条记录 第 {{c

camellia的博客 2752

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

vue2.0实现分页组件

http://www.php361.com/index.php?c=index&amp;amp;a=view&amp;amp;id=4671 http://www.yanglajiao.com/article/sinat_36422236/79474987 最近使用vue2.0重构项目, 需要实现一个分页的表格, 没有找到合适的分页组件, 就自己写了一个, 效果如下: 该项目是使用 vue-cli搭建的...

xp5xp6的博客 439

vue分页组件

组件源码: &lt;template&gt; &lt;div style="display: flex;flex-direction: row;align-items: center;margin: 20px 0;"&gt; &lt;div class="pages-item" v-if="isShowTotal"&gt;共有{{totalPage}}页&lt;/div&gt; &lt;div @click="firstPage" class="pages-item" style="c.

王延朕的博客 279
上一篇: 函数防抖和节流
下一篇: JavaScript生成uuid
codezha
博客等级 码龄10年 28粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值