当前位置:首页 > VUE

vue实现商品分页

2026-02-20 09:12:56VUE

Vue实现商品分页的方法

使用Element UI的分页组件

安装Element UI库后,可以直接使用其分页组件。在模板中添加el-pagination组件,通过v-model绑定当前页码,监听current-change事件处理分页逻辑。

<template>
  <div>
    <el-table :data="currentPageData">
      <!-- 表格内容 -->
    </el-table>
    <el-pagination
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-size="pageSize"
      :total="totalItems">
    </el-pagination>
  </div>
</template>
<script>
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      totalItems: 0,
      allData: [],
      currentPageData: []
    }
  },
  methods: {
    handleCurrentChange(page) {
      this.currentPage = page;
      this.updateCurrentPageData();
    },
    updateCurrentPageData() {
      const start = (this.currentPage - 1) * this.pageSize;
      const end = start + this.pageSize;
      this.currentPageData = this.allData.slice(start, end);
    }
  }
}
</script>

自定义分页实现

vue实现商品分页

如果不使用UI库,可以手动实现分页功能。创建一个分页组件,包含页码按钮和导航控制。

<template>
  <div class="pagination">
    <button @click="prevPage" :disabled="currentPage === 1">上一页</button>
    <span v-for="page in pageNumbers" :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);
    },
    pageNumbers() {
      const pages = [];
      for (let i = 1; i <= this.totalPages; i++) {
        pages.push(i);
      }
      return pages;
    }
  },
  methods: {
    prevPage() {
      if (this.currentPage > 1) {
        this.$emit('page-changed', this.currentPage - 1);
      }
    },
    nextPage() {
      if (this.currentPage < this.totalPages) {
        this.$emit('page-changed', this.currentPage + 1);
      }
    },
    goToPage(page) {
      this.$emit('page-changed', page);
    }
  }
}
</script>

后端分页与API集成

vue实现商品分页

对于大数据量,建议使用后端分页。发送请求时携带页码和每页数量参数,后端返回对应数据。

methods: {
  fetchProducts(page = 1) {
    axios.get('/api/products', {
      params: {
        page,
        per_page: this.pageSize
      }
    }).then(response => {
      this.currentPageData = response.data.data;
      this.totalItems = response.data.total;
    });
  },
  handlePageChange(page) {
    this.fetchProducts(page);
  }
}

优化分页体验

添加加载状态提示,避免页面切换时的空白。可以使用加载动画或骨架屏提升用户体验。

<template>
  <div>
    <div v-if="loading" class="loading">加载中...</div>
    <el-table v-else :data="currentPageData">
      <!-- 表格内容 -->
    </el-table>
  </div>
</template>
data() {
  return {
    loading: false
  }
},
methods: {
  async fetchProducts(page) {
    this.loading = true;
    try {
      const response = await axios.get('/api/products', {
        params: { page, per_page: this.pageSize }
      });
      this.currentPageData = response.data.data;
      this.totalItems = response.data.total;
    } finally {
      this.loading = false;
    }
  }
}

标签: 分页商品
分享给朋友:

相关文章

vue 分页的实现

vue 分页的实现

分页组件实现 使用Vue实现分页功能通常需要结合后端API和前端组件。以下是一种常见的实现方式: 模板部分 <template> <div class="pagination…

vue实现小说分页

vue实现小说分页

实现小说分页功能 Vue.js可以通过计算属性、动态渲染和分页逻辑实现小说分页功能。以下是具体实现方法: 数据准备 需要将小说内容存储为字符串或数组格式,建议按章节拆分: data() { r…

vue page 实现分页

vue page 实现分页

实现 Vue 分页功能的方法 使用 Element UI 的分页组件 安装 Element UI 后,可以直接使用 el-pagination 组件实现分页功能。 <template>…

vue 实现分页效果

vue 实现分页效果

使用 Element UI 实现分页 Element UI 提供了现成的分页组件 el-pagination,适合快速集成到 Vue 项目中。 安装 Element UI: npm install…

vue 实现商品列表

vue 实现商品列表

实现商品列表的基本结构 在Vue中实现商品列表,通常需要创建一个组件来展示商品数据。可以使用v-for指令循环渲染商品列表,并通过数据绑定动态显示商品信息。 <template> &…

vue实现分页全选

vue实现分页全选

Vue 实现分页全选功能 分页全选功能通常用于表格或列表数据,允许用户跨页批量选择数据。以下是实现该功能的几种方法: 使用 Vuex 或 Pinia 管理选中状态 全局状态管理工具(如 Vuex 或…