当前位置:首页 > VUE

vue实现表格刷新

2026-01-16 22:17:44VUE

Vue 实现表格刷新的方法

使用 v-if 强制重新渲染

通过 v-if 控制表格的显示与隐藏,切换时 Vue 会重新渲染组件。

<template>
  <button @click="refreshTable">刷新表格</button>
  <table v-if="showTable">
    <!-- 表格内容 -->
  </table>
</template>

<script>
export default {
  data() {
    return {
      showTable: true
    }
  },
  methods: {
    refreshTable() {
      this.showTable = false
      this.$nextTick(() => {
        this.showTable = true
      })
    }
  }
}
</script>

修改 key 强制更新

为表格绑定动态 key,改变 key 值会触发组件重新渲染。

<template>
  <button @click="refreshTable">刷新表格</button>
  <table :key="tableKey">
    <!-- 表格内容 -->
  </table>
</template>

<script>
export default {
  data() {
    return {
      tableKey: 0
    }
  },
  methods: {
    refreshTable() {
      this.tableKey += 1
    }
  }
}
</script>

通过数据更新驱动刷新

直接更新表格绑定的数据源,Vue 的响应式系统会自动更新视图。

<template>
  <button @click="refreshTable">刷新表格</button>
  <table>
    <tr v-for="item in tableData" :key="item.id">
      <td>{{ item.name }}</td>
    </tr>
  </table>
</template>

<script>
export default {
  data() {
    return {
      tableData: []
    }
  },
  methods: {
    async refreshTable() {
      const res = await fetch('/api/data')
      this.tableData = await res.json()
    }
  }
}
</script>

使用 $forceUpdate 方法

强制组件重新渲染,适用于数据更新但视图未响应的情况。

<template>
  <button @click="refreshTable">刷新表格</button>
  <table>
    <!-- 表格内容 -->
  </table>
</template>

<script>
export default {
  methods: {
    refreshTable() {
      this.$forceUpdate()
    }
  }
}
</script>

结合 Vuex 状态管理

通过 Vuex 管理表格数据,提交 mutation 或 action 更新数据。

// store.js
export default new Vuex.Store({
  state: {
    tableData: []
  },
  mutations: {
    updateTableData(state, payload) {
      state.tableData = payload
    }
  },
  actions: {
    async fetchTableData({ commit }) {
      const res = await fetch('/api/data')
      commit('updateTableData', await res.json())
    }
  }
})
<template>
  <button @click="refreshTable">刷新表格</button>
  <table>
    <tr v-for="item in $store.state.tableData" :key="item.id">
      <td>{{ item.name }}</td>
    </tr>
  </table>
</template>

<script>
export default {
  methods: {
    refreshTable() {
      this.$store.dispatch('fetchTableData')
    }
  }
}
</script>

注意事项

  • 数据驱动更新是 Vue 推荐的方式,优先考虑通过修改数据实现刷新
  • v-ifkey 方法会触发组件完全重新渲染,可能影响性能
  • $forceUpdate 不会更新子组件,仅强制当前组件重新渲染
  • 大型项目建议使用 Vuex 或 Pinia 集中管理状态

vue实现表格刷新

标签: 表格vue
分享给朋友:

相关文章

vue实现多级弹窗

vue实现多级弹窗

Vue 多级弹窗实现方法 方法一:使用动态组件与递归组件 在 Vue 中可以通过动态组件配合递归组件实现多级弹窗。定义一个基础弹窗组件,通过递归调用自身实现层级嵌套。 基础弹窗组件模板示例:…

vue实现裁剪头像

vue实现裁剪头像

Vue 实现头像裁剪功能 实现头像裁剪功能通常需要结合第三方库如 cropperjs 或 vue-cropper。以下是两种常见实现方式: 使用 vue-cropper 库 安装依赖: n…

vue如何实现放大缩小

vue如何实现放大缩小

Vue实现放大缩小功能的方法 在Vue中实现元素的放大缩小功能,可以通过CSS变换、第三方库或直接操作DOM样式来实现。以下是几种常见的方法: 使用CSS transform属性 通过绑定Vue的…

vue按钮实现截屏

vue按钮实现截屏

Vue 按钮实现截屏的方法 在 Vue 项目中实现截屏功能可以通过多种方式完成,以下是几种常见的方法: 使用 html2canvas 库 安装 html2canvas 库: npm ins…

vue实现下载暂停

vue实现下载暂停

Vue实现下载暂停功能 在Vue中实现下载暂停功能,通常需要结合XMLHttpRequest或Fetch API的AbortController来控制请求中断。以下是具体实现方法: 使用XMLHtt…

vue实现多用户登录

vue实现多用户登录

实现多用户登录的基本思路 在Vue中实现多用户登录通常需要结合后端API完成身份验证,并通过前端路由、状态管理(如Vuex或Pinia)和本地存储(如localStorage)来管理用户会话。以下是关…