昨天,在项目中做一个功能,一个tab切换,点击其中一个tab的时候,调用组件中的查询方法,切只调用一次。再次切换的时候不再调用。

我的做法是:

在父组件中创建一个变量,初始化data中设为0,在点击tab的时候设为1。将变量传给子组件,在并且在子组件中监听这个变量,然后执行查询方法。

但是,我遇到了一个问题,就是在子组件中只能监听到新的值,监听不到旧的值,代码如下:

父组件:

<template>
<div>
<div v-if="100 == whitchOne">
<packageitems :packagedata="packageData" :number1="number1"></packageitems>
</div>
</div>
</template>
import packageItems from "@/views/cart/components/newAssets/packageItems";
export default{
data(){
return{
number1:'0'
}
},
methods:{
showOwn(idx) {
if (idx == 100) {
this.number1 == 1 ? '' : this.number1 = 1;
}
}
}
}

子组件:

watch: {
// 点击新增资产搜索
number1: {
handler: function(val, oldval) {
console.log("val:" + val, "oldval:" + oldval);
if (val == '0') {
return false;
}
this.getPackages((this.keywords = this.formData.addAsset.packName), (this.prodNbrs = ""));
},
immediate: true,
deep: true
},

每次打印出来的值就是

val: 1 oldval: undefined

找了许久,都没有找到原因是什么,后来才发现原因不在于watch,而在于父组件中的v-if,不应该用v-if,而是应该用v-show

那么下面我们来说一下v-if和v-show的区别:

  • v-if:根据后面数据的真假,从DOM树上直接删除或重建DOM节点;如果初始条件为假,          则什么也不做;只有在条件第一次变为真时才开始局部编译。
  • v-show:只是修改diaplay的属性的显示和隐藏,元素始终在DOM树上;在任何条件下                  (首次条件是否为真)都被编译,然后被缓存,而且DOM元素始终被保留

在我所做的功能中显示隐藏组件用的是v-if,所以组件在初始化的时候是number1是没有被编译的,而且每次切换到该组件的时候都是重新编译,这样旧值就一直都是undefined。而v-show则不同,它初始化的时候就被创建了,切换就是显示和隐藏,不存在没有被编译找不到元素的情况。所以在这种会频繁切换的功能中要用v-show。

子组件监听props中的值,监听不到旧值的相关问题的更多相关文章

  1. VUE中父组件向子组件传递数据 props使用

    VUE中,子组件是不能直接访问父组件的数据(一般来说,当然如果你要破坏原则也是可以),如下< <body> <div id="fathercomponent" ...

  2. Vue父子组件数据双向绑定,子组件可修改props

    第一种,子组件通过监听父组件数据,子组件改变数据之后通知给父组件 原文链接:https://blog.csdn.net/m0_37728716/article/details/81776929 父组件 ...

  3. 【vue开发】 父组件传值给子组件时 ,watch props 监听不到解决方案

    解决方案: watch:{ data:{ immediate:true, handler:function(){ } }} 示例:  

  4. 父组件传值给子组件时 ,watch props 监听不到解决方案

    watch:{ data:{ immediate:true, handler:function(){ } } }

  5. Vue (表单、斗篷、条件、循环指令,分隔符成员、计算属性成员、属性的监听、vue组件、子组件、各个常见的钩子函数)

    表单指令 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF- ...

  6. problem: vue之数组元素中的数组类型值数据改变却无法在子组件视图更新问题

    问题:给父组件上的一个数组中的某个元素中的数组类型值,添加值后,数据没有在子组件上更新. 对元素添加值之后,vue的数据其实已经更新了并传给了子组件,子组件中没有立即更新. 那么这里有个问题,在子组件 ...

  7. React中父组件与子组件之间的数据传递和标准化的思考

    React中父组件与子组件之间的数据传递的的实现大家都可以轻易做到,但对比很多人的实现方法,总是会有或多或少的差异.在一个团队中,这种实现的差异体现了每个人各自的理解的不同,但是反过来思考,一个团队用 ...

  8. Vue中的父组件给子组件传值

    父子组件传值: 父组件在调用子组件的地方,添加一个自定义的属性,属性的值就是你要传递给子组件的数据,如果值是一个变量,那么需要使用到绑定属性: 在子组件定义的地方,添加一个props选项,值为一个数组 ...

  9. vue中父组件给子组件传值的方法

    顺序............................................. -------------列表组件,注册组件.调用使用组件----------------- 1,子组件 ...

  10. vue中父组件给子组件额外添加参数

    1 子组件: this.$emit('callbackone',item.parentId) 2 父组件: @callbackone="callbackone($event,index)&q ...

随机推荐

  1. CamoTeacher:玩转半监督伪装物体检测,双一致性动态调整样本权重 | ECCV 2024

    论文提出了第一个端到端的半监督伪装目标检测模型CamoTeacher.为了解决半监督伪装目标检测中伪标签中存在的大量噪声问题,包括局部噪声和全局噪声,引入了一种名为双旋转一致性学习(DRCL)的新方法 ...

  2. Angular 18+ 高级教程 – Component 组件 の Dynamic Component 动态组件

    前言 Angular 是 MVVM 框架. MVVM 的宗旨是 "不要直接操作 DOM". 为了这个 "不要直接操作 DOM",我们已经讲了 2 篇文章了. 第 ...

  3. 均值回归策略在A股ETF市场获利的可能性

    如何在股票市场获利 曾经有人告诉我一个在股票市场赚钱的秘诀,只要掌握这个秘诀,赚钱就像捡钱一样容易.他说:这个秘诀其实很简单,就是在股票价格低的时候买入,在价格高的时候卖出. 啧啧,不愧是秘诀,明明是 ...

  4. 9月《中国数据库行业分析报告》已发布,47页干货带你详览 MySQL 崛起之路!

    为了帮助大家及时了解中国数据库行业发展现状.梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新<中国数据库行业分析报告>,持 ...

  5. 墨天轮沙龙 | SphereEx代野:Apache ShardingSphere-从中间件到分布式生态演进之路

    在9月22日举办的[墨天轮数据库沙龙第十期-国产中间件专场]中,SphereEx 解决方案专家 代野分享了Apache ShardingSphere:从中间件到分布式生态演进之路>主题演讲,本文 ...

  6. kotlin函数和Lambda表达式——>高阶函数与lambda表达式

    1.高阶函数 高阶函数是将函数用作参数或返回值的函数. 一个不错的示例是集合的函数式⻛格的 fold,它接受一个初始累积值与一个接合函数,并通过将当前 累积值与每个集合元素连续接合起来代入累积值来构建 ...

  7. day07-数据类型及标识符

    数据类型 强类型语言 要求变量的使用严格要严格符合规定,所有变量都必须先定义后才能使用 弱类型语言 java的数据类型分为两大类 基本类型(primitive type) 数值类型 整数类型 byte ...

  8. spring上 -基于注解配置bean,动态代理,AOP笔记

    用的是jdk8,spring框架里jar包的下载可以自己搜到 注解用到的jar包. 60,注解配置Bean快速入门 基本介绍 代码结构: UserDao.java package com.hspedu ...

  9. 云原生爱好者周刊:揪出 Prometheus 中时间戳抖动

    开源项目推荐 O11y toolkit O11y toolkit 是一个工具集,用来维护.调试和增强你的可观测性系统,改善我们日常对指标.日志和链路追踪的使用体验.例如 oy-scrape-jitte ...

  10. Plain-Det:同时支持多数据集训练的新目标检测 | ECCV'24

    近期在大规模基础模型上的进展引发了对训练高效大型视觉模型的广泛关注.一个普遍的共识是必须聚合大量高质量的带注释数据.然而,鉴于计算机视觉中密集任务(如目标检测和分割)标注的固有挑战,实际的策略是结合并 ...