一、分析问题

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. tableau连接不上mysql或不显示mysql表的终极解决方法

    [报错一]连不上mysql An error occurred while communicating with MySQL The connection to the data source mig ...

  2. C++顺序结构(1)任务

    1.下载并观看视频(照着做,多看几遍) https://www.jianguoyun.com/p/DWCNkNEQi8_wDBj5ptYFIAA 2.两项照着做的任务

  3. ng-alain 创建页面

    https://ng-alain.com/cli/generate/zh https://ng-alain.com/docs/new-page/zh 默认情况下,创建模块 trade,创建在目录 sr ...

  4. 再次探讨 WinForms 多线程开发

    再次探讨 WinForms 多线程开发 WinForms 已经开源,您现在可以在 GitHub 上查看 WinForm 源代码. 正好有人又讨论到在 WinFroms 环境下的多线程开发,这里就再整理 ...

  5. gradle 很棒

    一直以为 gradle 就是 maven 的一个易读版,表达上比 XML 更精简了,实际上还是maven,似乎没有存在的必要. 但是,万万没想到,这玩意儿竟然是一个语言,竟然可以调试!也就是说,它不是 ...

  6. Debian 12 (bookworm) 安装方法及其国内软件源

    摘要: Debian 12 (bookworm) 已经于2023年6月份正式发布.以下为原来信息: Debian 12 (bookworm) 预计于2023年中期发布,但是目前(2023年4月)已经处 ...

  7. Qt开源作品8-通用控件移动

    一.前言 在做一些项目的过程中,有一种应用场景是需要拖动设备在一个容器中,自由拖动摆放到合适的位置,然后保存对应设备的坐标位置信息,在软件启动好以后自动加载配置好的坐标位置信息,将每个设备移动到对应的 ...

  8. 大型IM工程重构实践:企业微信Android端的重构之路

    本文由腾讯技术yeconglu分享,原题"企业微信大型Android系统重构之路",下文进行了排版和内容优化等. 1.引言 企业微信本地部署版(下文简称为本地版)是从2017年起, ...

  9. Scala,一门「特立独行」的语言!

    入门 Spark 的路上很难不接触 Scala . Scala 似乎是为 java 提供了很多『类似函数式编程』的语法糖,这里记录一下这个语言独特的地方分享给读者朋友们. 参考资料主要有: 曹洁 . ...

  10. 《深入理解Mybatis原理》MyBatis初始化机制详解

    主要构件及其相互关系 主要构件: 主要的核心部件解释如下: SqlSession: 作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能 Executor:MyB ...