子组件监听props中的值,监听不到旧值的相关问题
昨天,在项目中做一个功能,一个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中的值,监听不到旧值的相关问题的更多相关文章
- VUE中父组件向子组件传递数据 props使用
VUE中,子组件是不能直接访问父组件的数据(一般来说,当然如果你要破坏原则也是可以),如下< <body> <div id="fathercomponent" ...
- Vue父子组件数据双向绑定,子组件可修改props
第一种,子组件通过监听父组件数据,子组件改变数据之后通知给父组件 原文链接:https://blog.csdn.net/m0_37728716/article/details/81776929 父组件 ...
- 【vue开发】 父组件传值给子组件时 ,watch props 监听不到解决方案
解决方案: watch:{ data:{ immediate:true, handler:function(){ } }} 示例:
- 父组件传值给子组件时 ,watch props 监听不到解决方案
watch:{ data:{ immediate:true, handler:function(){ } } }
- Vue (表单、斗篷、条件、循环指令,分隔符成员、计算属性成员、属性的监听、vue组件、子组件、各个常见的钩子函数)
表单指令 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF- ...
- problem: vue之数组元素中的数组类型值数据改变却无法在子组件视图更新问题
问题:给父组件上的一个数组中的某个元素中的数组类型值,添加值后,数据没有在子组件上更新. 对元素添加值之后,vue的数据其实已经更新了并传给了子组件,子组件中没有立即更新. 那么这里有个问题,在子组件 ...
- React中父组件与子组件之间的数据传递和标准化的思考
React中父组件与子组件之间的数据传递的的实现大家都可以轻易做到,但对比很多人的实现方法,总是会有或多或少的差异.在一个团队中,这种实现的差异体现了每个人各自的理解的不同,但是反过来思考,一个团队用 ...
- Vue中的父组件给子组件传值
父子组件传值: 父组件在调用子组件的地方,添加一个自定义的属性,属性的值就是你要传递给子组件的数据,如果值是一个变量,那么需要使用到绑定属性: 在子组件定义的地方,添加一个props选项,值为一个数组 ...
- vue中父组件给子组件传值的方法
顺序............................................. -------------列表组件,注册组件.调用使用组件----------------- 1,子组件 ...
- vue中父组件给子组件额外添加参数
1 子组件: this.$emit('callbackone',item.parentId) 2 父组件: @callbackone="callbackone($event,index)&q ...
随机推荐
- 推荐一款流量录制回放工具:jvm-sandbox-repeater
在软件开发和测试过程中,我们经常会遇到需要对网络请求进行录制和回放的需求,以便进行调试.测试和分析.为了模拟真实的用户请求,我们通常会使用各种流量录制回放工具来记录并重放网络请求. 其中,jvm-sa ...
- Glob 语法
Glob 通常用来匹配 file, gitignore, Tailwind CSS purge 都有用到 参考: Online Test Tool 语法解释 常用到的 ./PdfTemplate/** ...
- 解密Prompt系列38.多Agent路由策略
常见的多智能体框架有几类,有智能体相互沟通配合一起完成任务的例如ChatDev,CAMEL等协作模式, 还有就是一个智能体负责一类任务,通过选择最合适的智能体来完成任务的路由模式,当然还有一些多智能体 ...
- 【QT性能优化】QT性能优化之QT性能优化实战 QML优化 QT高性能 QT6系列视频课程 QT6 性能优化实战 QT高性能 QT原理源码 QML优化 GUI绘图原理源码
QT性能优化实战视频课程 QT6 Widgets高性能应用编程 1.课前考试 2.字符串优化(上) 3.字符串优化(下) 4.绘图优化(上) 5.绘图优化(下) 6.QT界面优化(上) 7.QT界面 ...
- push_back和 emplace_back背后的逻辑
push_back 与 emplace_back 的区别 push_back: 功能:将一个对象(或其副本)添加到 vector 的末尾. 参数:接受一个对象(或其副本)的引用. 过程: 如果传入的是 ...
- 点亮PC13- 使用寄存器点亮
#include "stm32f10x.h" // Device header int main(void) { // 打卡GPIOC的时钟 RCC->APB2ENR = 0 ...
- kotlin函数和Lambda表达式——>内联函数
1.内联函数 使用高阶函数会带来一些运行时的效率损失:每一个函数都是一个对象,并且会捕获一个闭包.即那些 在函数体内会访问到的变量.内存分配(对于函数对象和类)和虚拟调用会引入运行时间开销. 但是在许 ...
- day02-json字符串和js对象
Web1.0时代 早期网站的登录,如果失败,需要刷新页面才能重新登录; 如果不点击提交按钮,就不知道自己密码输错了: 现在大多数的网站,都是局部刷新,在不刷新整个页面的情况下,实现页面更新: 注册的时 ...
- 云原生爱好者周刊:Fluentbit Operator 正式成为 Fluent 子项目
云原生一周动态要闻: Fluentbit Operator 正式成为 Fluent 子项目 Kubernetes 1.22 发布 Rust Cloud Native 组织成立 CNCF 宣布 Graf ...
- 华为云-容器引擎CCE-部署Nginx应用
环境准备 注册华为云账号 复制下面地址到浏览器地址栏(https://reg.huaweicloud.com/registerui/cn/register.html?fromacct=c76cea9f ...