news 2026/6/10 19:55:32

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/9 5:55:45

5分钟快速构建API调用的retry装饰器

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Python装饰器retry_me&#xff0c;可以快速为任何函数添加重试功能。要求&#xff1a;1. 可配置重试次数和异常类型&#xff1b;2. 支持固定或随机延迟&#xff1b;3. 保持…

作者头像 李华
网站建设 2026/6/10 15:18:21

极速验证:用Docker快速搭建替代PHPStudy的MySQL环境

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Docker快速部署工具&#xff0c;功能&#xff1a;1. 一键启动MySQL容器(多版本可选) 2. 自动配置与PHPStudy兼容的参数 3. 数据迁移助手 4. 临时环境管理界面 5. 使用指南生…

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

终极SoapCore实战指南:ASP.NET Core SOAP服务快速上手

终极SoapCore实战指南&#xff1a;ASP.NET Core SOAP服务快速上手 【免费下载链接】SoapCore SOAP extension for ASP.NET Core 项目地址: https://gitcode.com/gh_mirrors/so/SoapCore SoapCore作为ASP.NET Core生态中的SOAP协议中间件&#xff0c;为开发者提供了在现代…

作者头像 李华
网站建设 2026/6/10 13:16:02

设计模式[13]——责任链模式一分钟彻底说透

设计模式[13]——责任链模式&#xff08;Chain of Responsibility&#xff09;一分钟彻底说透&#xff08;C版软件领域真实例子&#xff09; 一句话定义 将请求沿着一条“链”传递&#xff0c;每个处理者决定自己处理或交给下一个&#xff0c;避免请求发送者和接收者之间的直接…

作者头像 李华
网站建设 2026/6/10 15:01:58

解锁Kodi中文世界:2.0.1版本插件库完全使用指南

还在为Kodi媒体中心的中文内容匮乏而烦恼吗&#xff1f;今天为您带来一款经过精心测试的中文插件库资源&#xff0c;让您轻松开启Kodi的中文媒体之旅。repository.xbmc-addons-chinese-2.0.1.zip文件包含了丰富的中文媒体功能&#xff0c;从视频点播到直播电视&#xff0c;一应…

作者头像 李华
网站建设 2026/6/10 14:31:18

HiChatBox喂食时间提醒功能

HiChatBox喂食时间提醒功能技术解析在快节奏的都市生活中&#xff0c;越来越多家庭选择养宠物来陪伴日常。然而&#xff0c;工作繁忙、作息不规律常常让人忘记按时喂食&#xff0c;尤其是多用户家庭中责任模糊&#xff0c;容易出现漏喂或重复投喂的问题。HiChatBox作为一款集语…

作者头像 李华