当前位置:首页 > 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 快速初始化项目,运行以下命令安装并创建项目: npm install -g @vue/cli vue create my-pro…

vue文件实现页面跳转

vue文件实现页面跳转

使用 router-link 实现跳转 在 Vue 模板中直接使用 <router-link> 组件,通过 to 属性指定目标路径: <router-link to="/tar…

h5页面实现vr

h5页面实现vr

实现H5页面VR效果的方法 在H5页面中实现VR(虚拟现实)效果,可以通过以下几种技术方案实现: 使用WebVR API WebVR是一个实验性的JavaScript API,提供了访问VR设备的功…

vue实现的页面

vue实现的页面

以下是基于 Vue.js 实现页面的核心方法和关键步骤,结合现代开发实践整理而成: 环境配置与项目初始化 使用 Vue CLI 或 Vite 创建项目,推荐选择 Vue 3 组合式 API 风格:…

vue elementui实现分页

vue elementui实现分页

Vue + ElementUI 分页实现方法 安装与引入 确保已安装 ElementUI,可通过 npm 或 yarn 安装: npm install element-ui 在 main.js 中全…

Vue实现lagger页面

Vue实现lagger页面

Vue实现懒加载页面的方法 懒加载(Lazy Loading)是一种优化技术,用于延迟加载非关键资源,从而提升页面初始加载速度。在Vue中可以通过以下方式实现懒加载: 路由懒加载 使用Vue Rou…