在el-table表头上引入组件不能实时传参bug

news2025/1/15 17:11:39

文章目录

    • 场景还原
    • 解决方法
    • 出现原因

场景还原

产品要求:点击表格的表头,能触发一个下拉的列表,列表能携带表格的筛选条件,获取相应的数据

写了一个demo,来还原一下bug出现的场景:

<div id="demo">
  <el-table
    :data="tableData"
    style="width: 100%"
  >
    <el-table-column
      prop="date"
      label="日期"
      width="180"
    ></el-table-column>
    <el-table-column
      prop="address"
      label="地址"
      width="180"
    >
      <template slot="header">
        <city-component
          :params="paramsData"
        ></city-component>
      </template>
    </el-table-column>
  </el-table>
</div>
data: {
        tableData: [], // 表格数据
        paramsData: {} // 传递给组件的数据
    },
    methods: {
      // 改变paramsData函数
      changeParamsDataFn() {
        this.paramsData = date.now().getTime();
      }
    }

在el-table表格的表头中,引入组件 city-component,需要将数据paramsData传递给组件使用。

第一次进入页面时,paramsData第一次被初始化赋值,DOM渲染el-table完成后,是可以正常使用;但若是需要更改paramsData的值,并且同步传递给city-component组件使用时,打印paramsData的值,是可以看到改值的变化,但是组件却无法接受到变化后的paramsData的值

解决方法

(1)给el-table加上一个 :key=tableKeyValue

(2)在改变paramsData后,改变 tableKeyValue的值

<el-table
   :key="tableKeyValue"          
>
<!-- 其他跟上面一致 -->
</el-table>
methods: {
    changeParamsDataFn() {
        this.tableKeyValue = "city" + date.noe();
    }
}

出现原因

这就得先说说,Vue的渲染机制:虚拟DOM+diff算法

在el-table表头上引入组件不能实时传参bug

  • 根据初始DOM生成旧虚拟DOM;所以使用虚拟DOM的缺点之一便是第一次打开页面,需要更多的时间
  • 当有了修改数据的操作时,便会生成新的DOM树
  • diff算法就会比较新/旧DOM树,找出变更的DOM
  • 将改动的DOM,渲染成真实的DOM;有个优点便是,每次变更DOM,不需要从头到尾查询每一个DOM,只需要找出变更的地方就可

因为表格的DOM没有变化,数据改变后,修改后的DOM与原来的DOM一致,无法重新渲染表格。虽然我们能打印出数据的变化,但是无法将数据传入组件。

加上key值,是为了数据改变的同时,改变table的key值,diff算法就能找出前后表格DOM的不同,就能重新渲染表格,重新把值传入组件

似乎也可以将key值,加在引入组件的单元格上,没有真正写过,下次遇到这类问题可以试试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day15--加入购物车-初始化vuex

1.加入购物车&#xff1a; 我的操作&#xff1a; ************************************************************************************************************* 2.购物车里面的商品数据在多个页面都会用到。所以把购物车里面的商品数据存储在vuex里面&#xff0c; 我的…

11月29日:thinkphp框架->请求

回忆上节知识点 thinkphp官方文档解释 Rest控制器&#xff1a;主要是对资源进行控制&#xff0c;在thinkphp6.0开始废弃&#xff0c;推荐使用资源控制器 Rest控制器使用符合RESTFul风格&#xff0c;RESTFul方法和标准模式的操作方法定义主要区别在于&#xff0c;需要对请求类型…

Linux圈子里的“鲁大师“dmidecode-尚文网络xUP楠哥

~~全文共1189字&#xff0c;阅读需约5分钟。 进Q群11372462&#xff0c;领取专属报名福利&#xff0c;包含云计算学习路线图代表性实战训练大厂云计算面试题资料! Linux系统内核中有这样一个叫做DMI的东东&#xff0c;英文全称是Desktop Management Interface&#xff0c;翻译…

Ubutun搭建集群遇到的一些问题

安装部署K8s集群时会遇到很多问题&#xff0c;以下都是我踩过的坑&#xff0c;还有一些小坑当时没来得及记录&#xff0c;后续如果有遇到的话再进行补充。此处非常感谢江城琉璃梦同学对我的帮助。 1.工作节点执行kubectl get nodes时拒绝连接 执行指令&#xff1a;kubectl ge…

管理最忌讳用权管人

阅读本文大概需要 1.66 分钟。最近星球在更新一些系列课程&#xff0c;其中有一节课叫「怎样从技术人转型管理者&#xff1f;」应该很适合大多读者&#xff0c;毕竟关注我的读者里&#xff0c;做技术做管理的居多&#xff0c;所以这篇也发这里给大家分享下。程序员做技术的&…

网络结点中心性

结点中心性 node centrality 被认为是度量网络结点重要性的重要指标 常用的结点中心性有以下五种&#xff1a; &#xff08;以下各中心的概念在不同地方的定义可能不同&#xff0c;实际计算应查看使用工具的具体实现&#xff09; 1、度中心性 degree centrality 常被直接称为…

使用SPSSAU进行Roc联合诊断

1.基本思想 在一些医学临床研究中&#xff0c;有很多影响因素&#xff08;或者指标&#xff09;会对诊断起着作用。比如‘低出生体重儿’的出生&#xff0c;受到产妇年龄&#xff0c;产妇体重&#xff0c;产妇在妊娠期间是否吸烟&#xff0c;是否患有高血压共4项指标的影响。 …

一种高选择性和灵敏的荧光生物标记物,可用于标记碱性磷酸酶 (ALP),5-FAM-Alkyne,510758-19-7,荧光生物标记物

【中文名称】5-羧基荧光素-炔烃【英文名称】 FAM alkyne,5-isomer&#xff0c;5-FAM alkyne【结 构 式】 【CAS号】510758-19-7 【分子式】C24H15NO6【分子量】413.39【基团】炔基基团【纯度】95%【规格标准】5mg&#xff0c;10mg&#xff0c;25mg&#xff0c;包装灵活&#x…

LeetCode - 76 最小覆盖子串

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 76. 最小覆盖子串 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回…

基于java+springboot+mybatis+vue+elementui的会议管理系统

项目介绍 随着社会竞争压力的不断加强 &#xff0c;企事业单位内部的会议都在不断的增加&#xff0c;有效的会议可以提高企事业内部的沟通&#xff0c;更好的做出符合战略目标的决策。但是当下会议的交接工作一直是通过人们口头传达的方式来进行的&#xff0c;很明显这种方式比…

NLP文章和视频违规声明原创案例集锦

一、 文章违规声明原创案例集锦 平台鼓励用户就自行创作并发布的作品标识原创,但作品本身应符合以下前提: 1、受著作权法保护(如公开性质内容不具备著作权,则不在原创范围内) 2、不得侵犯他人权益(如未经授权使用他人内容,则不在原创范围内) 3、符合平台运营规范(…

C++利器STL——vector详解

要努力&#xff0c;但不要着急&#xff0c;繁花锦簇&#xff0c;硕果累累都需要过程&#xff01; 目录 1.vector的介绍及使用 1.1vector的介绍 1.2vector的使用 2.vector模拟实现 3.vector常见试题 1.vector的介绍及使用 1.1vector的介绍 1. vector是表示可变大小数组的序列容…

从查询语句执行流程看MySQL架构

言 常言道&#xff0c;看待一个事情要先知全貌&#xff0c;从高维度认识、理解&#xff0c;然后再深入各个细节&#xff0c;一一击破。MySQL的学习也不例外&#xff0c;那么你知道一条SQL在MySQL中执行要经历哪些步骤吗&#xff1f;每个步骤都有MySQL的哪些“零件”参与吗&…

双十二薅羊毛!这几款数码好物不可错过

双十二即将开始&#xff0c;在这段时间里有的人已经将自己心仪的塞满了整个购物车了吧&#xff0c;而有的人还没想好到底要入手什么&#xff0c;如果你也是还在纠结的话&#xff0c;不知道该买什么又或是想知道哪些产品更适合你入手&#xff0c;不妨来看看小编今天为你带来的这…

【JavaScript函数】

JavaScript函数1 本节目标2 函数的概念3 函数的使用3.1 声明函数3.2 调用函数3.3 函数的封装4 函数的参数4.1 形参和实参4.2 执行过程4.3 注意点4.4 函数形参和实参个数不匹配问题5 函数的返回值5.1 return语句5.2 函数返回值注意事项5.3 break,continue,return的区别6 argumen…

Python 中的安全密码处理

前言 几乎每个应用程序都需要某种形式的身份验证、密码处理或使用安全凭据&#xff0c;例如 API 密钥。您可能不是安全专家&#xff0c;但您应该知道如何安全地处理所有这些密码和凭据&#xff0c;以保护应用程序用户的凭据和数据以及您自己的 API 密钥和各种令牌。 &#xf…

GitHub 最全的开发资源汇总系列

GitHub 最全的开发资源汇总系列 了解学习开发各种项目&#xff01;&#xff01;&#xff01; GitHub 最全的开发资源汇总系列 由伯乐在线持续更新 Java 资源大全&#xff1b;Java资源大全中文版&#xff0c;包括开发库、开发工具、网站、博客、微信、微博等。 —— Java资源…

建筑结构抗震分析之施加地震波的方法与理论机理

一、地震波的输入有三种方式&#xff1a; 第一种是是质量加速度施加法&#xff0c;通过达朗贝尔原理&#xff0c;将地震作用转化为施加在质点上惯性力&#xff1b;第二种是底部位移法&#xff0c;在结构底部直接输入位移地震波&#xff0c;模拟地面震动反应&#xff0c;计算结…

Function 源码解析与实践

作者&#xff1a;陈昌浩 1 导读 if…else…在代码中经常使用&#xff0c;听说可以通过 Java 8 的 Function 接口来消灭 if…else…&#xff01;Function 接口是什么&#xff1f;如果通过 Function 接口接口消灭 if…else…呢&#xff1f;让我们一起来探索一下吧。 2 Functio…

共享新机遇 共谋新发展 | 蓝海创意云携元宇宙技术参展2022昆明南博会

11月19日&#xff0c;第6届中国-南亚博览会暨第26届中国昆明进出口商品交易会&#xff08;以下简称南博会&#xff09;在昆明盛大开幕&#xff0c;经过10年的精心打造&#xff0c;南博会已经成为集国际贸易、投资洽谈、文化交流等为一体的高水平综合性国际博览会。 蓝海创意云…