首页 > 其他分享 >Cannot read properties of null (reading '$el')找出真凶

Cannot read properties of null (reading '$el')找出真凶

时间:2024-03-11 22:01:17浏览次数:35  
标签:el null const 渲染 read tableRef value reading

Cannot read properties of null (reading '$el')

菜鸟,在vue3 开发遇到的问题,百思不得其解,为什么会为null, 先上代码大概的代码结构:

<template>
    <el-Dialog v-model="isLoading">
        <el-table ref="tableRef">
            <el-table-column prop="name"/>
        </el-table>
    </el-dialog>
</template>
<script steup>
	//省略...import
	const isLoading= ref(false);
	const tableRef = ref(null);
	
	const openDialog = asnyc (row: any) =>{
		//省略...加载数据,其他处理
		consolog.log(tableRef.value);	//此处会输出null
		const elment = tableRef.value.$el;
		
		isLoading.value = true;
	};
</script>   

  调试了很久,怎么会为null, 明明已经检查了tableRef已经声明并正确设置ref,初始化都没问题。如果说DOM没有渲染完毕,尝试在

onMounted里面输出正常是可以,因为它已经渲染完了,结果还是null, 上网找到一种方式说await nextTick()可以等待DOM渲染完毕,也是不行。   最终调度发现是由于这里的影响,由于上级的el-dialog 未设置为显示(渲染),所以子节点里面都不会被渲染。
isLoading.value = true;

  修正后:, 这行代码显示isLoading.value = true;放在它前面即可。

const openDialog = asnyc (row: any) =>{
		//省略...加载数据,其他处理
isLoading.value = true;
		consolog.log(tableRef.value);	//此处会输出ok
		const elment = tableRef.value.$el;
		
		
	};
</script> 

  经过这次知道:

1.Dom元素未被渲染时,ref.是无法取得value的

2.onMounted 执行完后,通常都是渲染完后

3.await nextTick()可以选个渲染完毕

4.当你节点设置到v-if, 或节点未设置响应属性为显示时,则子元素也不会被渲染(这点比较容易忽略)

欢迎各位大佬指点


标签:el,null,const,渲染,read,tableRef,value,reading
From: https://www.cnblogs.com/cnHeng/p/18067168

相关文章

  • Rc+RefCell解释
    1Rc(ReferenceCounted)Rc(ReferenceCounted):是Rust标准库中,用于处理引用计数的智能指针。用来突破单一所有权的限制。其基本操作是通过clone()增加引用计数。ReferenceCounted//Rc会把对应的数据结构创建在堆上//堆上的数据才适合被用来在多个函数调用栈帧中共享leti......
  • python3实现xmind用例转excel
    1importxmindparser2importxlwt,xlrd3fromxlutils.copyimportcopy4fromxlwtimportWorksheet5fromxmindparserimportxmind_to_dict6importdatetime7importos8importre9importtraceback1011#当前时间戳12a=datetim......
  • ElasticSearch架构介绍及原理解析
    前言在当今大数据时代,数据的快速增长使得有效地管理、检索和分析数据成为企业发展的关键。Elasticsearch(以下简称ES)作为一种开源的分布式搜索和分析引擎,在这个领域中扮演着重要的角色。它不仅仅只是全文搜索,还支持结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关......
  • 简述Helm及其优势
    Helm是Kubernetes的软件包管理工具,Helm能够将一组K8S资源打包统一管理,是查找、共享和使用为Kubernetes构建的软件的最佳方式。Helm中通常每个包称为一个Chart,一个Chart是一个目录,优势:1)统一管理、配置和更新这些分散的k8s的应用资源文件;2)分发和复用一套应用模板;3)将应用的一......
  • ELMO模型—>解决向量一词多义
    2024.3.11ELMO模型—>解决向量一词多义elmo解决一词多义问题,与Word2Vec不同的是,可以融合上下文信息ElMO(专门做词向量,通过预训练)不只是训练一个Q矩阵,我们还可以把这个词的上下文信息融入到这个Q矩阵中上图中,左边的LSTM获取E2的上文信息,右边对应获取下文信息怎么处理一词多......
  • Logstash接收udp/tcp数据 python+ udp/tcp +logstash +elasticsearch
    Logstash接收udp/tcp数据背景:在 Logstash数据源为日志文件操作 基础上进行一、配置文件1.D:\usr\local\etc\logstash\pipeline1目录下logstash.conf文件配置input{stdin{}udp{host=>"0.0.0.0"#从5000端口获取日志port=>5000......
  • MySQL分组之后按照固定顺序排序 FIELD
    以下回答来自通义千问:要按照特定顺序显示type字段的统计结果,MySQL并没有提供直接按指定顺序进行GROUPBY的方法。但是,你可以结合ORDERBY语句和FIELD()函数来实现这一需求。FIELD()函数可以将某个字段的值与一系列指定值进行比较,并按照指定值的顺序排序。假设你希望固定的type顺......
  • delphi 中 StringHelper 详解,字符串常见操作
    大小写转换functionToLower:string;functionToLower(LocaleID:TLocaleID):string;functionToLowerInvariant:string;functionToUpper:string;functionToUpper(LocaleID:TLocaleID):string;functionToUpperInvariant:string;classfunctionLowerCase(const......
  • 在v-model中无法使用表达式的解决方法
    当我们想要使用复杂一点逻辑来决定具体使用哪个属性时,就会遇到v-model本身只支持简单的数据属性,并不支持表达式。有两种方法可以满足:1、使用计算属性+getter\setter<divid="demo">姓:<inputtype="text"placeholder="firstName"v-model="firstName"><br>......
  • shell 给字符串双引号,并去除多余的空格
    用到的命令:echo输出字符串tr常用于处理字符串间隔,例如将空格分割替换为逗号分割;删除多个连续的空格等等sed也是用于字符串处理。如字符串替换,也可做字符串删除awk也用于字符串处理。如将字符串按照空格等分隔符,分成好几列,按需输出某一列的值;字符计数,统计次数;复杂的字符串......