You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap-vue-3分页组件异常:切换页码时数据项丢失

解决Bootstrap-Vue-3分页切换时表格数据丢失问题

问题诊断

你遇到的是bootstrap-vue-3 v0.5.1版本的已知bug,该版本中b-table的内置分页逻辑与b-pagination组件配合时,会出现页码切换后数据渲染异常的问题。

解决方案

方案1:升级组件版本

直接将bootstrap-vue-3升级到v0.6.x及以上的稳定版本,新版本已经修复了这个分页渲染的兼容性问题。执行以下命令升级:

npm update bootstrap-vue-3

方案2:手动处理分页逻辑(无需升级)

如果暂时无法升级组件,可以绕过b-table的内置分页,手动计算分页后的数据:

修改后的完整代码如下:

<template>
  <div class="overflow-auto">
    <b-pagination
      v-model="currentPage"
      :total-rows="rows"
      :per-page="perPage"
      aria-controls="my-table"
    ></b-pagination>

    <p class="mt-3">Current Page: {{ currentPage }}</p>

    <b-table
      id="my-table"
      :items="paginatedItems"
      small
    ></b-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      perPage: 3,
      currentPage: 1,
      items: [
        { id: 1, first_name: 'Fred', last_name: 'Flintstone' },
        { id: 2, first_name: 'Wilma', last_name: 'Flintstone' },
        { id: 3, first_name: 'Barney', last_name: 'Rubble' },
        { id: 4, first_name: 'Betty', last_name: 'Rubble' },
        { id: 5, first_name: 'Pebbles', last_name: 'Flintstone' },
        { id: 6, first_name: 'Bamm Bamm', last_name: 'Rubble' },
        { id: 7, first_name: 'The Great', last_name: 'Gazzoo' },
        { id: 8, first_name: 'Rockhead', last_name: 'Slate' },
        { id: 9, first_name: 'Pearl', last_name: 'Slaghoople' }
      ]
    }
  },
  computed: {
    rows() {
      return this.items.length
    },
    paginatedItems() {
      // 手动计算当前页的数据切片
      const start = (this.currentPage - 1) * this.perPage
      const end = start + this.perPage
      return this.items.slice(start, end)
    }
  }
}
</script>

说明:通过新增paginatedItems计算属性,手动对原始数据进行切片处理,同时移除b-table上的:per-page和:current-page属性,完全绕过组件内置的分页逻辑,避免版本bug导致的异常。


内容的提问来源于stack exchange,提问作者Kali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:17:26