当前位置:首页 > VUE

vue实现页面分页

2026-01-08 07:05:53VUE

Vue实现页面分页的方法

使用Element UI的分页组件

Element UI提供了现成的分页组件el-pagination,可以快速实现分页功能。需要先安装Element UI库。

<template>
  <div>
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-sizes="[10, 20, 30, 40]"
      :page-size="pageSize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="total">
    </el-pagination>
  </div>
</template>

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

使用自定义分页组件

如果需要更灵活的控制,可以自定义分页组件。通过计算页码范围和按钮事件来实现。

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: currentPage === page }">
        {{ page }}
      </button>
    </span>
    <button @click="nextPage" :disabled="currentPage === totalPages">下一页</button>
  </div>
</template>

<script>
export default {
  props: {
    totalItems: Number,
    itemsPerPage: Number,
    currentPage: 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实现分页

通常分页需要后端配合,通过API传递页码和每页数量参数。

vue实现页面分页

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

使用Vuex管理分页状态

在大型应用中,可以使用Vuex集中管理分页状态。

// store.js
const store = new Vuex.Store({
  state: {
    pagination: {
      currentPage: 1,
      pageSize: 10,
      total: 0
    }
  },
  mutations: {
    SET_PAGE(state, page) {
      state.pagination.currentPage = page
    },
    SET_PAGE_SIZE(state, size) {
      state.pagination.pageSize = size
    },
    SET_TOTAL(state, total) {
      state.pagination.total = total
    }
  }
})

// 组件中使用
this.$store.commit('SET_PAGE', newPage)

响应式分页布局

可以根据屏幕大小动态调整每页显示的项目数量。

data() {
  return {
    pageSize: window.innerWidth < 768 ? 5 : 10
  }
},
created() {
  window.addEventListener('resize', this.handleResize)
},
methods: {
  handleResize() {
    this.pageSize = window.innerWidth < 768 ? 5 : 10
  }
}

标签: 分页页面
分享给朋友:

相关文章

vue实现 页面

vue实现 页面

Vue 实现页面的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 是官方脚手架工具,适合传统项目;Vite 提供更快的现代构建体验。 npm cr…

php实现页面跳转

php实现页面跳转

PHP实现页面跳转的方法 在PHP中,可以通过多种方式实现页面跳转,以下是几种常用的方法: header函数跳转 header("Location: target_page.php"); ex…

h5实现登录页面跳转页面跳转页面跳转

h5实现登录页面跳转页面跳转页面跳转

使用HTML5实现登录页面跳转 在HTML5中实现登录页面跳转可以通过多种方式完成,包括表单提交、JavaScript跳转和超链接跳转。以下是几种常见的实现方法。 表单提交跳转 使用HTML表单的a…

h5实现页面跳转页面跳转页面

h5实现页面跳转页面跳转页面

H5 实现页面跳转的方法 使用 <a> 标签实现跳转 通过超链接标签 <a> 的 href 属性指定目标页面路径,用户点击后跳转。 <a href="target.…

h5实现页面切换

h5实现页面切换

h5实现页面切换的方法 在H5中实现页面切换可以通过多种方式完成,包括使用原生HTML链接、JavaScript动态加载、框架路由等。以下是几种常见的方法: 使用原生HTML的<a>标…

vue实现页面

vue实现页面

Vue 实现页面的基本方法 安装 Vue.js 依赖 通过 npm 或 yarn 安装 Vue.js: npm install vue # 或 yarn add vue 创建 Vue 实例 在…