当前位置:首页 > VUE

vue分页如何实现

2026-02-19 01:24:35VUE

Vue分页实现方法

使用Element UI的分页组件

安装Element UI库后,可以直接使用其分页组件。在模板中添加el-pagination,通过v-model绑定当前页码,设置totalpage-size控制分页逻辑。

vue分页如何实现

<template>
  <el-pagination
    v-model:currentPage="currentPage"
    :page-size="pageSize"
    :total="total"
    @current-change="handleCurrentChange"
  />
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      total: 100
    }
  },
  methods: {
    handleCurrentChange(val) {
      this.currentPage = val
      this.fetchData()
    },
    fetchData() {
      // 根据currentPage和pageSize获取数据
    }
  }
}
</script>

自定义分页组件

创建一个自定义分页组件,包含页码按钮和导航逻辑。通过props接收总数据量、当前页和每页条数,通过emit事件通知父组件页码变化。

vue分页如何实现

<template>
  <div class="pagination">
    <button @click="prevPage" :disabled="currentPage === 1">上一页</button>
    <span v-for="page in pages" :key="page">
      <button @click="goToPage(page)" :class="{ active: page === currentPage }">
        {{ page }}
      </button>
    </span>
    <button @click="nextPage" :disabled="currentPage === totalPages">下一页</button>
  </div>
</template>

<script>
export default {
  props: {
    totalItems: Number,
    currentPage: Number,
    itemsPerPage: Number
  },
  computed: {
    totalPages() {
      return Math.ceil(this.totalItems / this.itemsPerPage)
    },
    pages() {
      const range = []
      for (let i = 1; i <= this.totalPages; i++) {
        range.push(i)
      }
      return range
    }
  },
  methods: {
    prevPage() {
      this.$emit('page-changed', this.currentPage - 1)
    },
    nextPage() {
      this.$emit('page-changed', this.currentPage + 1)
    },
    goToPage(page) {
      this.$emit('page-changed', page)
    }
  }
}
</script>

结合后端API实现分页

当数据量较大时,通常需要后端分页。前端传递页码和每页条数参数,后端返回对应数据。

methods: {
  async fetchData() {
    const response = await axios.get('/api/data', {
      params: {
        page: this.currentPage,
        size: this.pageSize
      }
    })
    this.data = response.data.items
    this.total = response.data.total
  }
}

使用Vuex管理分页状态

在大型应用中,可以使用Vuex集中管理分页状态,便于多个组件共享和同步分页信息。

// store.js
export default new Vuex.Store({
  state: {
    currentPage: 1,
    pageSize: 10,
    total: 0
  },
  mutations: {
    setCurrentPage(state, page) {
      state.currentPage = page
    },
    setTotal(state, total) {
      state.total = total
    }
  },
  actions: {
    fetchData({ state, commit }) {
      return axios.get('/api/data', {
        params: {
          page: state.currentPage,
          size: state.pageSize
        }
      }).then(response => {
        commit('setTotal', response.data.total)
        return response.data.items
      })
    }
  }
})

分享给朋友:

相关文章

vue自动登录如何实现

vue自动登录如何实现

实现自动登录的基本思路 自动登录通常通过结合本地存储(如localStorage或cookie)和token验证机制实现。用户首次登录成功后,服务器返回的认证token会被保存在客户端,下次打开应用时…

如何实现vue表格联动

如何实现vue表格联动

实现 Vue 表格联动的方法 数据绑定与响应式更新 通过 Vue 的响应式特性,将多个表格的数据绑定到同一个数据源或计算属性。当一个表格的数据发生变化时,另一个表格会自动更新。例如: data()…

vue前端分页怎么实现

vue前端分页怎么实现

使用 Element UI 的分页组件 Element UI 提供了现成的分页组件 <el-pagination>,可以快速实现分页功能。需要安装 Element UI 并注册组件。 &…

h5如何实现vr效果

h5如何实现vr效果

使用WebXR API实现VR效果 WebXR是浏览器中实现VR/AR的核心API,支持设备姿态追踪、渲染交互等功能。需在支持WebXR的设备(如Oculus、HTC Vive)或浏览器模拟环境中运行…

php如何实现静态化

php如何实现静态化

PHP 实现静态化的方法 使用 ob_start() 和 ob_get_contents() 利用 PHP 的输出缓冲功能捕获动态生成的页面内容,将其保存为静态文件。这种方法适用于内容不频繁变化的页面…

如何实现语音react

如何实现语音react

语音识别基础设置 在React中实现语音识别功能通常需要借助浏览器的Web Speech API或第三方库。Web Speech API提供了SpeechRecognition接口,允许应用程序直接访…