news 2026/6/23 19:23:38

Vue2 中 v-if / v-else-if + el-table 组件复用坑问题总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue2 中 v-if / v-else-if + el-table 组件复用坑问题总结

1. 问题背景

vue2项目中,写法如下:

<divv-if="priceType ==='FIXED_PRICE'"><el-table:data="fixedRules"/></div><divv-else-if="priceType ==='RANGE_FIXED_PRICE'"><el-table:data="intervalFixedRules"/></div><divv-else-if="priceType ==='RANGE_MAX_PRICE'"><el-table:data="intervalMaxRules"/></div>

在切换 priceType 时,出现以下异常现象:

  1. 表头错乱 / 不刷新
  2. 数据显示串表
  3. 列结构残留
  4. 滚动条异常

数据本身是正确的,但UI显示不正确

2. 问题原因

  • 在vue2中,v-if / v-else-if组件复用机制

    • 在vue2中,同一层级下的v-if / v-else-if / v-else 会复用同一个组件实例。
  • el-table组件内部维护了大量状态:

    • columns配置缓存。
    • 表头结构
    • 行列计算结果
    • 滚动容器状态
    • 布局测量结果

所以,当DOM结构相似,只是字段含义不同时,vue判断其为‘高度可复用组件’,且el-table内部状态无法自动清理

3. 处理方案

为每个el-talbe设置唯一key

<divv-if="priceType ==='FIXED_PRICE'"><el-table:data="fixedRules"key="FIXED_PRICE"/></div><divv-else-if="priceType ==='RANGE_FIXED_PRICE'"><el-table:data="intervalFixedRules"key="RANGE_FIXED_PRICE"/></div><divv-else-if="priceType ==='RANGE_MAX_PRICE'"><el-table:data="intervalMaxRules"key="RANGE_MAX_PRICE"/></div>
  • 说明
    key不同,vue会强制销毁并重建组件,这个时候el-table内部状态会重置,priceType变化时,表格也会显示正常
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 16:03:52

Infovision iWork-Safety 安全生产管理平台完全指南

Infovision iWork-Safety 安全生产管理平台完全指南 【免费下载链接】InfovisioniWork-Safety安全生产管理平台配置手册分享 本仓库提供了一个资源文件的下载&#xff0c;该文件为 **Infovision iWork-Safety 安全生产管理平台 配置手册.pdf**。该手册详细介绍了如何配置和使用…

作者头像 李华
网站建设 2026/6/23 13:06:11

小林coding vs 传统开发:效率对比分析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个效率对比工具&#xff0c;可以记录开发者在小林coding平台和传统开发环境&#xff08;如本地IDE&#xff09;完成相同任务的时间和代码质量。工具应自动收集数据并生成对比…

作者头像 李华
网站建设 2026/6/23 6:33:22

终极指南:如何用Flyte与Spark打造企业级数据流水线

终极指南&#xff1a;如何用Flyte与Spark打造企业级数据流水线 【免费下载链接】flyte Scalable and flexible workflow orchestration platform that seamlessly unifies data, ML and analytics stacks. 项目地址: https://gitcode.com/gh_mirrors/fl/flyte 还在为大规…

作者头像 李华
网站建设 2026/6/22 14:33:07

1小时验证创意:用ArkTS快速原型设计健身APP

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速构建一个健身社交APP的ArkTS原型&#xff0c;包含三个主要Tab&#xff1a;1) 首页-今日推荐训练课程(带封面和难度标签) 2) 数据-步数/卡路里环形图表 3) 社交-好友动态feed流。…

作者头像 李华
网站建设 2026/6/18 7:48:36

零基础学OSGEarth:30分钟创建第一个3D地球

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个最简OSGEarth教学项目&#xff1a;1.显示带纹理的地球模型&#xff1b;2.添加经纬度网格&#xff1b;3.实现鼠标旋转缩放&#xff1b;4.在控制台显示当前视角坐标&#xff…

作者头像 李华
网站建设 2026/6/22 19:03:25

Kotaemon开发者大会预告:即将公布重磅新功能

Kotaemon开发者大会预告&#xff1a;即将公布重磅新功能在每年一度的Kotaemon开发者大会上&#xff0c;技术风向往往悄然转向。今年也不例外——官方预告中那句“即将公布重磅新功能”虽简短&#xff0c;却已在开发者社区激起层层涟漪。尽管目前尚未披露完整细节&#xff0c;但…

作者头像 李华