news 2026/5/14 1:19:03

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/5/11 15:40:14

Kotaemon助力企业降本增效:自动化客服案例分析

Kotaemon助力企业降本增效&#xff1a;自动化客服案例分析在当前企业数字化转型加速的背景下&#xff0c;客户服务作为直接面向用户的窗口&#xff0c;正经历一场由人工智能驱动的深刻变革。传统客服模式依赖大量人力投入&#xff0c;面临响应慢、成本高、服务质量波动大等痛点…

作者头像 李华
网站建设 2026/5/10 1:22:09

比传统开发快10倍:AI生成虚拟串口工具实测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个高性能虚拟串口工具&#xff0c;要求&#xff1a;1. 采用C实现内核驱动级虚拟串口&#xff1b;2. 支持创建无限数量的虚拟COM端口&#xff1b;3. 提供API接口供其他程序调用…

作者头像 李华
网站建设 2026/5/9 23:06:12

传统vs AI:WebSocket配置效率提升300%实测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请对比展示手动编写和AI生成的Nginx WebSocket配置差异&#xff1a;1. 左侧显示开发者手动编写的常见配置&#xff08;故意包含3个典型错误&#xff1a;缺少proxy_http_version、错…

作者头像 李华
网站建设 2026/5/10 11:48:13

ESJsonFormat-Xcode终极指南:5分钟快速生成iOS模型代码

ESJsonFormat-Xcode终极指南&#xff1a;5分钟快速生成iOS模型代码 【免费下载链接】ESJsonFormat-Xcode 将JSON格式化输出为模型的属性 项目地址: https://gitcode.com/gh_mirrors/es/ESJsonFormat-Xcode ESJsonFormat-Xcode是一款专为Xcode设计的智能插件&#xff0c;…

作者头像 李华
网站建设 2026/5/13 17:17:14

终极指南:如何用toggleterm.nvim插件轻松管理Neovim多终端

终极指南&#xff1a;如何用toggleterm.nvim插件轻松管理Neovim多终端 【免费下载链接】toggleterm.nvim A neovim lua plugin to help easily manage multiple terminal windows 项目地址: https://gitcode.com/gh_mirrors/to/toggleterm.nvim 你是否曾经在Neovim中频繁…

作者头像 李华
网站建设 2026/5/9 19:16:50

企业级低代码平台工作流与表单集成完整指南

企业级低代码平台工作流与表单集成完整指南 【免费下载链接】JeecgBoot &#x1f525;「企业级低代码平台」前后端分离架构SpringBoot 2.x/3.x&#xff0c;SpringCloud&#xff0c;Ant Design&Vue3&#xff0c;Mybatis&#xff0c;Shiro&#xff0c;JWT。强大的代码生成器让…

作者头像 李华