vue实现表格列显隐缓存同步的核心是:监听columnconfig变化→localstorage写入→页面加载时读取还原;需deep:true深度监听、带用户和路径的key、json安全解析、v-if控制显隐+key强制重绘或dolayout刷新。

Vue 数据监听实现表格列显隐配置的缓存同步,核心在于:监听列配置变化 → 立即写入本地存储 → 页面加载时读取并还原。整个过程不依赖外部库,纯 Vue 原生响应式 + localStorage 即可完成。
监听列配置对象的变化
使用 watch 深度监听列配置数据(如 option.column 或 checkList),确保任意字段显隐状态变更都能捕获:
- 必须设置
deep: true,因为列配置通常是嵌套对象或数组 - 推荐监听一个统一的响应式字段(例如
columnConfig),而不是逐个监听v-if对应的布尔值 - 在 handler 中调用
localStorage.setItem,key 建议带用户标识和路由路径,避免不同用户/页面冲突,例如:localStorage.setItem(`${userInfo.account}_${$route.path}`, JSON.stringify(columnConfig))
页面初始化时读取缓存并赋值
在 created 或 beforeMount 钩子中读取缓存,优先级低于用户首次手动设置(即有缓存就用缓存,没缓存则用默认值):
- 先从 localStorage 获取字符串,
JSON.parse转为对象 - 检查解析结果是否为合法数组/对象,防止缓存损坏导致报错
- 将缓存值合并或直接赋给 data 中的列配置变量(如
this.checkList = cached || this.defaultFields)
注意 v-if 渲染与 key 更新的协同
仅监听和缓存还不够——若列配置变了但表格未重绘,UI 不会更新。需确保:
- 所有
<el-table-column></el-table-column>使用v-if="columnConfig[prop]"控制显隐(v-show在 el-table 中常失效) - 为
<el-table></el-table>设置唯一:key(如:key="columnConfigVersion"),当列配置变化时主动更新 key,强制组件重新渲染 - 或调用
this.$refs.table.doLayout()手动刷新表格布局(适用于 Element UI)
封装成 mixin 复用更稳妥
把监听、读取、保存逻辑抽成 mixin,避免每个列表页重复写:
- 混入中定义通用的
created和watch,通过this.$route.path和this.userInfo自动适配上下文 - 组件内只需声明
columnConfig字段,并在模板中绑定即可 - 冲突时组件 data 优先,不影响原有逻辑,也便于后期调试
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










