一、分析问题

1、一个下拉框组件的更新由另一个下拉框组件控制被动更新列表,子级下拉框的值是由父级下拉框的值调用接口获取,每次父级下拉框值的改变都会改变子级下拉框的数据源也就是会改变子级下拉框的options,切换后之前的父级节点找不到就会报了这个错,父级节点不改变(即不切换)的话不会报错

二、解决方案

1、vue页面的html层

<div>
<el-row :gutter="15">
<el-col :span="4">
<div">父级下拉框:</div>
<el-select clearable v-model="parentId" @change="parentSelected" placeholder="请选择父级下拉框">
<el-option
v-for="item in parentInfos"
:key="item.Id"
:label="item.Name"
:value="item.Id">
</el-option>
</el-select>
</el-col>
<el-col :span="4">
<div class="name">子级下拉框:</div>
<el-cascader
class="entity"
ref="cascader"
:key="isChangeSelectKeyNum"
placeholder="请选择子级下拉框"
clearable
filterable
v-model="pId"
:options="options"
:props="{ checkStrictly: true }">
</el-cascader>
</el-col>
</el-row>
</div>

2、vue页面的数据定义层

data () {
return {
parentId: '',
parentInfos: [],
pId: '',
loading: false,
list: [],
currPage: 1,
pageSize: 10,
counts: 0,
isChangeSelectKeyNum: 0,
}
},

3、vue页面的方法层

methods: {
// 获取XX列表
async parentSelected (val) {
this.loading = true
try {
const data = await GetXXXList({
XXX: val,
})
++this.isChangeSelectKeyNum
this.loading = false
},
}

4、本文的核心是isSelectShow,key值改变,级联组件会重新渲染

isSelectShow

5、至于为什么改变key的值,级联组件就会重新渲染?

在Vue中,key是用来追踪每个节点的身份,当key改变时,Vue会认为这是一个新的节点,因此会重新渲染这个组件。

首先,我们需要理解Vue的渲染机制。在Vue中,组件的渲染是基于它们的数据和属性进行的。当这些数据或属性发生变化时,Vue会自动检测到这些变化,并重新渲染相关的组件,以确保视图与数据保持同步。

key属性在Vue中具有特殊的意义。它被用作一个标识符,用于追踪每个节点的身份。当key的值发生变化时,Vue会认为这是一个全新的节点,因为key的变动意味着之前的数据和状态可能已经不再适用。为了确保视图的一致性和准确性,Vue会选择重新渲染这个组件。

对于el-cascader组件来说,它是一个级联选择器,通常用于选择有层次结构的数据。当你改变它的key值时,Vue会认为这是一个新的el-cascader组件,因此会触发重新渲染,以确保视图与最新的数据和状态相匹配。

总结起来,改变el-cascader的key值会触发重新渲染,是因为Vue通过key来识别组件的身份,当key发生变化时,意味着组件的状态或数据可能发生了变动,为了保持视图与数据的同步,Vue会选择重新渲染这个组件。

若本文有帮助到阅读本文的同学,欢迎点赞、关注、收藏,互相学习交流。

TypeError: Cannot read properties of null (reading 'level')的更多相关文章

  1. Vue 报错Error in render: “TypeError: Cannot read properties of null (reading ‘xxx’)” found in

    前端vue报错 [Vue warn]: Error in render: "TypeError: Cannot read properties of null (reading 'name' ...

  2. [canvas]ncaught TypeError: Cannot read properties of null (reading 'getContext')

    相信你和我一样是直接复制大佬的js代码(笑) ------------ 主要问题在于:js先加载完了,html才加载,导致js获取不了html的对象 解决办法: 把  <head />  ...

  3. Vue报错: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'protocol')

    Vue报错: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'protocol') 报错信 ...

  4. 15 Uncaught TypeError: Cannot set properties of null (setting ‘onclick‘)

    1.报错的代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  5. Error in created hook: "TypeError: Cannot read properties of undefined (reading 'get')"

    写Vue 的时候常遇到的错误之一就是XXXXXX未定义,然后来一个undefined这种问题一般都是创建钩子出错:无法读取未定义的 xxx 属性. 此错误一般多出现在 created() 中, Vue ...

  6. Error in v-on handler: “TypeError: Cannot read properties of undefined (reading ‘resetFields‘)“

    在做vue element 项目中,做了一个新增 打开弹框的功能,想每次点击新增的时候表单项重置.1.使用了this.$refs[formName].resetFields();2.但是报错了,原因是 ...

  7. Cannot read properties of null (reading ‘insertBefore‘)

    一.报错现象 vue3 + element plus 项目,本地启动时,页面进行所有操作都正常:部署到test环境后,数据驱动DOM变化的操作会导致如下报错. 二.可能原因及解决方案 经过分析出现报错 ...

  8. 解决npm ERR! Cannot read properties of null (reading ‘pickAlgorithm‘)报错问题

    解决方法:在终端中运行命令:npm cache clear --force 然后重新运行 npm i 命令,再次安装安装完成,没有出现报错npm run serve 运行项目,项目可以正常启动了. 安 ...

  9. Reading Level Assessment Using Support Vector Machines and Statistical Language Models-paper

    Authors: Sarah E. Schwarm University of Washington, Seattle, WAMari Ostendorf University of Washingt ...

  10. spring boot项目下的application.properties中的logging.level设置日志级别

    日志级别 trace<debug<info<warn<error<fatal 默认级别为info,即默认打印info及其以上级别的日志,如下: logging.level ...

随机推荐

  1. 02C++顺序结构(1)

    1.C++程序的样子 2.流 输出流 COUT<< 3.一个实例及解析 4.小结 头文件的解释 头文件是C++程序对其他程序的引用,就是让编译器的预处理器把这个输入输出流的标准文件iost ...

  2. 使用 .NET Core 实现一个自定义日志记录器

    目录 引言 1. 抽象包 1.1 定义日志记录接口 1.2 定义日志记录抽象类 1.3 表结构迁移 2. EntityFramework Core 的实现 2.1 数据库上下文 2.2 实现日志写入 ...

  3. 【前端】【H5 API】addEventListener监听网络状态的变动

    WebviewObject Webview窗口对象,用于操作加载HTML页面的窗口 属性 id:webview窗口的标识 方法:监听 addEventListener 添加事件监听器 wobj.add ...

  4. shell之变量默认值

    {var:-default_value}当var 不存在,或者值为空时,返回default_value name不存在,返回了一个默认值,但是name并没有改变, 后续不可访问 $ set -u # ...

  5. JVM故障分析及性能优化系列之四:jstack生成的Thread Dump日志线程状态

    https://www.javatang.com/archives/2017/10/25/36441958.html JVM故障分析及性能优化系列文章 JVM故障分析及性能优化系列之一:使用jstac ...

  6. Qt编写安防视频监控系统46-视频存储

    一.前言 在整个视频监控系统的开发迭代升级过程中,遇到过各种奇奇怪怪的需求,都是客户提出来的,有些需求很合理,有些就不那么的自然了,牢记这客户是上帝的原则,能满足的尽量满足.相信各位同行的研发人员都会 ...

  7. vue create与vue init的区别

    1.vue ui 图形化界面 2. vue create 是vue-cli3.x的初始化方式,目前模板是固定的,模板选项可自由配置,创建出来的是vue-cli3的项目,与cue-cli2项目结构不同, ...

  8. MTK8766 LK GPIO初始化状态设置分析

    问题来源是M.2 Dongle的LED灯在kernel起来之前就亮了,kernel起来之后又初始化成熄灭状态.通过排查硬件规格书.GPIO表格,大概判定是前期软件初始化不正确造成的.通过观察串口打印的 ...

  9. 上位机能不能替代PLC呢?

    一.前言 大家好!我是付工. 之前有个学员问了这样的一个问题: 学会了上位机,是不是就可以不用PLC了呢? 今天跟大家分享一下上位机能不能代替PLC? 二.网络架构 首先我们看下这张网络架构图. 从图 ...

  10. Html5移动应用性能优化笔记

    前景描述:最近一直在学习html5移动开发,找了很多资料,做了很多的页面.奈何作为一个程序猿,没有前端攻城狮那般专业,处处碰壁,想遍各种方法,经历各种尝试,最终的效果自己都能看醉.其中最大的问题就是 ...