当前位置:首页 > VUE

vue实现列表翻页

2026-01-19 03:48:47VUE

Vue 列表翻页实现方法

基础分页实现

在 Vue 中实现列表翻页通常需要结合分页组件和数据请求。使用 Element UI 的分页组件可以快速实现:

vue实现列表翻页

<template>
  <div>
    <ul>
      <li v-for="item in currentPageData" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
    <el-pagination
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-size="pageSize"
      :total="total">
    </el-pagination>
  </div>
</template>

<script>
export default {
  data() {
    return {
      listData: [],
      currentPage: 1,
      pageSize: 10,
      total: 0
    }
  },
  computed: {
    currentPageData() {
      return this.listData.slice(
        (this.currentPage - 1) * this.pageSize,
        this.currentPage * this.pageSize
      )
    }
  },
  methods: {
    handleCurrentChange(val) {
      this.currentPage = val
    },
    fetchData() {
      // API请求获取数据
      // 设置this.listData和this.total
    }
  },
  created() {
    this.fetchData()
  }
}
</script>

服务器端分页

对于大数据量场景,建议使用服务器端分页:

vue实现列表翻页

methods: {
  async fetchData() {
    const params = {
      page: this.currentPage,
      size: this.pageSize
    }
    const res = await api.getList(params)
    this.listData = res.data.list
    this.total = res.data.total
  },
  handleCurrentChange(val) {
    this.currentPage = val
    this.fetchData()
  }
}

无限滚动实现

对于移动端或需要流畅滚动体验的场景,可以使用无限滚动:

<template>
  <div class="infinite-list" v-infinite-scroll="load" infinite-scroll-disabled="busy">
    <div v-for="item in listData" :key="item.id" class="list-item">
      {{ item.name }}
    </div>
    <div v-if="loading" class="loading">加载中...</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      listData: [],
      page: 1,
      busy: false,
      loading: false,
      hasMore: true
    }
  },
  methods: {
    async load() {
      if (this.busy || !this.hasMore) return

      this.busy = true
      this.loading = true

      const res = await api.getList({ page: this.page })
      this.listData = [...this.listData, ...res.data.list]
      this.hasMore = res.data.hasMore
      this.page++

      this.busy = false
      this.loading = false
    }
  }
}
</script>

性能优化技巧

对于大型列表,使用虚拟滚动可以提高性能:

<template>
  <RecycleScroller
    class="scroller"
    :items="listData"
    :item-size="50"
    key-field="id"
    v-slot="{ item }"
  >
    <div class="item">
      {{ item.name }}
    </div>
  </RecycleScroller>
  <button @click="loadMore">加载更多</button>
</template>

<script>
import { RecycleScroller } from 'vue-virtual-scroller'
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'

export default {
  components: { RecycleScroller },
  data() {
    return {
      listData: []
    }
  },
  methods: {
    loadMore() {
      // 加载更多数据
    }
  }
}
</script>

实现列表翻页时需要考虑数据量大小、用户体验和性能要求,选择合适的分页方式。服务器端分页适合大数据量,客户端分页适合小数据量,无限滚动适合移动端,虚拟滚动适合超长列表。

标签: 翻页列表
分享给朋友:

相关文章

网页制作css 列表

网页制作css 列表

创建CSS列表样式 使用CSS可以自定义HTML列表(有序列表<ol>和无序列表<ul>)的外观,包括项目符号、缩进、颜色等。以下是一些常见的列表样式方法: 基础列表样式 通…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象进行渲染。以下是几种常见的实现方式: 基础列表渲染 通过 v-for 指令遍历数组,动态生成列表项。 &…

vue翻页实现

vue翻页实现

Vue 翻页实现方法 在 Vue 中实现翻页功能通常需要结合分页组件和数据处理逻辑。以下是几种常见的实现方式: 使用 Element UI 分页组件 Element UI 提供了现成的分页组件 &…

vue实现列表

vue实现列表

实现列表的基本方法 在Vue中实现列表通常使用v-for指令,这是Vue的核心功能之一。v-for可以遍历数组或对象,为每个元素生成对应的DOM节点。 <template> <…

uniapp商品列表

uniapp商品列表

商品列表实现方法 在uniapp中实现商品列表功能,可以通过多种方式完成,以下是几种常见的方法: 使用scroll-view组件实现滚动列表 <scroll-view scroll-y=…

h5 实现列表

h5 实现列表

列表实现方法 在HTML5中,可以通过多种方式实现列表,包括无序列表、有序列表和自定义列表。以下是具体的实现方法。 无序列表 无序列表使用<ul>标签,列表项使用<li>标…