情况是这样的,父子组件都是复选框,点击父组件的复选框,子组件的复选框要显示并全选,取消复选框,子组件隐藏。子组件显隐我用的 v-if ,使用created钩子函数来使子组件处于全选状态。

但是出现的问题就是点击父组件的第一个复选框,在点击第二个复选框,子组件并不会触发v-if,只是更新了数据。倒是没有出发子组件的created钩子函数。

于是在父组件里手动卸载组件并创建组件,第7行和第14行

然而并没有效果

因为Vue会合并对重复数据的处理,并没有卸载组件,而是一直使true的状态

怎么办呢?

使用$nextTick(渲染更新完成的回调)

在第7行卸载后会渲染一个,我在卸载后在创建就不会合并了

这里$nextTick 使微任务

如果使用setTimeout会发生抖动,由于使宏任务,会等待所有微任务执行完成后才会执行,虽然时间使0,但是还是有时长,卸载在创建中间出现消失在显示的情况

代码如下:

 1    /**
2 * 当选中状态发生变化(是否是选中状态,子组件的数据)
3 */
4 handleCheckedItemChange(isChecked, item){
5 console.log(isChecked,item, "=============");
6 // 卸载组件
7 this.isShowDetail = false;
8 this.sonDetail = item.sort ? item.sort : null
9 this.isSelected = isChecked || false
10 // 因为vue会将重复的指令合并成一个,所以都没走卸载组件,这里使用$nextTick在渲染后进行(组件卸载后)在重新创建组件,
11 // 因为$nextTick 是微任务,而使用setTimeout是宏任务,时间过长,使窗口发生抖动,因为销毁在创建中间消失一下
12 this.$nextTick(() => {
13 // 创建子组件
14 this.isShowDetail = true
15 });
16 }
17 },

开心的一天,有一种东西叫苦尽甘来,啊哈哈,昨天还在雨中导航,今天就有收获了

一定要带伞,因为天有不测风云,啊哈哈

也希望每个人在下雨的时候都有个人撑着伞在等你

随机推荐

  1. Selenium和ChromeDriver下载地址

    Selenium 官方所有版本: https://selenium-release.storage.googleapis.com/index.html 镜像所有版本:https://npm.taoba ...

  2. 【.NET 与树莓派】让喇叭播放音乐

    如果你和老周一样,小时候特别喜欢搞破坏(什么电器都敢拆),那下面这样小喇叭你一定见过. 这种喇叭其实以前很多录音机都用,包括上小学时买来做英语听力的便携录音机.嗯,就是放录音带的那种,录音带也叫磁带或 ...

  3. K8S(04)核心插件-coredns服务

    K8S核心插件-coredns服务 目录 K8S核心插件-coredns服务 1 coredns用途 1.1 为什么需要服务发现 2 coredns的部署 2.1 获取coredns的docker镜像 ...

  4. 生成不带签名(BOM)的UTF8格式的XML

    生成XML的一种方法如下: using System.Xml; private void SaveXML(string savePath) { XmlWriterSettings setting = ...

  5. 鸟哥的linux私房菜——第五章学习(Linux的文件权限与目录配置)

    ******************第五章学习****************** 1.[重要的三个概念] 1).文件拥有者(使用者):User,该文件/文件夹只能我来读写: 2).群组:Group, ...

  6. 杭电多校HDU 6599 I Love Palindrome String (回文树)题解

    题意: 定义一个串为\(super\)回文串为: \(\bullet\) 串s为主串str的一个子串,即\(s = str_lstr_{l + 1} \cdots str_r\) \(\bullet\ ...

  7. xss 之herf输出

    首先查看下漏洞页面,发现输入的1111,  直接传参到herf 中, 查阅资料得知: 输出出现在a标签的href属性里面,可以使用javascript协议来执行js 查看源代码: if(isset($ ...

  8. 大数据开发-linux后台运行,关闭,查看后台任务

    在日常开发过程中,除了例行调度的任务和直接在开发环境下比如Scripts,开发,很多情况下是shell下直接搞起(小公司一般是这样),看一下常见的linux后台运行和关闭的命令,这里做一个总结,主要包 ...

  9. java变量、数据类型、运算符

    关键字.保留字.标识符 关键字 Java关键字是对Java编译器有特殊含义的字符串,是编译器和程序员的一个约定,程序员利用关键字来告诉编译器其声明的变量类型.类.方法特性等信息 保留字 goto.co ...

  10. HTML form All In One

    HTML form All In One action + method onsubmit, submit event action + method <form action="&q ...