位置: IT常识 - 正文

watch监听不到 props变量的变化(watch监听不到props数据改变)

编辑:rootadmin
watch监听不到 props变量的变化

目录

一、问题

二、解决方法

三、总结


一、问题

推荐整理分享watch监听不到 props变量的变化(watch监听不到props数据改变),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:watch监听不到 store数据变化,watch监听不到对象变化,watch监听不到props数据改变,watch监听不到props传来数据的变化,watch监听不到对象数组的变化,watch监听不到对象变化,watch监听不到props传来数据的变化,watch监听不到props,内容如对您有帮助,希望把文章链接给更多的朋友!

1.父组件向子组件传参变量 detailData:{tableData:devicelist}。在父组件中detailData是响应式的。

在第一层子组件中接收detailData,并且通过:detailData="detailData.tableData"传递给第二层子组件,   在第二层子组件中使用如下代码监听deailData的变化,用watch就是监听不到detailData的变化。

watch( () => props.detailData, (newval,oldval) => { //监听到 detailData的变化,我需要执行一些函数 console.log("watch detailData") } );二、解决方法

1.检查了监听的代码,正确的呀,没有问题

2.使用devtools插件检查,看到子组件中的detailData确实是发生了变化的呀,怎么我就是监听不到呀。很是离谱。、

3.是不是 detailData不是响应式的呢?也不是呀,使用 isReactive(detailData),检查了是响应式的呀。

4.到底是为什么呀,我真的没有见过这么离谱的事情,在第一层子组件中都监听不到 detailData的变化。尝试在父组件中监听 detailData的变化,结果竟然除了第一次变化,之后的变化的监听不到——离奇呀,devtools告诉我子组件的值都变了,只是没有渲染上去;父组件的监听却告诉我detailData的值压根就没有变化。

watch监听不到 props变量的变化(watch监听不到props数据改变)

5.看到给detailData赋值的地方,于是打印了一下给detailData赋的值,但是也只能打印第一次赋值的情况,后续赋值也打印不出来呀。

console.log("item",isRef(item),item,isProxy(item)) Object.assign(detailData, { tableData: item });

6.最后的最后:我要求detailData变化,就是要求 上面代码中的 item(deviceList)一直变化。竟然发现有一处写了如下一段代码,直接给devicelist赋值,devicelist不就是会失去响应式吗?可是为啥 isProxy()判断竟然是 true?

没细想把这段直接给响应式数据 deviceList赋值的代码注释了,竟然好了。。。。。。。

deviceList = deviceList.map((element) => { if (!element.isWarning) { element.isWarning = 0; } if (!element.level) { element.level = 0; } if (!element.remainTime || element.remainTime === '- -') { element.tempRemainTime = Infinity; } else { element.tempRemainTime = element.remainTime; } return element; });三、总结

1.也是绝了,问题倒是解决了,是和响应式有关系,但是又不是完全是因为响应式。因为isProxy()---判断数据是否是 reactive或 ref 数据类型,判断确实是 true呀。真的是自相矛盾,所以我真的也是很迷惑。如有大佬知道原因,欢迎评论区指教!

2.上面的直接原因表明当你在setup中希望一个reactive数据是响应式的,绝对不可以用  =  直接给数据赋值。上面注释的代码,我也改成for循环了,就没有问题了。

3.watch监听不到,你可以看看你希望变化的数据  是否存在 被直接用 = 赋值的情况

4.解决之前,我也看了其他的博客,都没有解决我的问题,所以特此记录一下。

/*

希望对你有帮助!

如有错误,欢迎指正,非常感谢!

*/ 

本文链接地址:https://www.jiuchutong.com/zhishi/297714.html 转载请保留说明!

上一篇:医学图像处理的SCI期刊和顶会(医学图像处理的步骤一是设计)

下一篇:node npm 下载,安装,使用 全网最全教程(npm安装node指定版本)

  • 递延所得税负债转回怎么理解
  • 出口退税账务怎么做账
  • 通过固定资产科目核算
  • 辞退员工补偿金是按实发工资算还是应发
  • 公司员工社保怎么办理的
  • 金蝶专业版怎么导入备份账套
  • 软件使用费的税率是多少啊
  • 票据占比不得超过各项贷款的
  • 股权转让是把公司卖了吗
  • 工业企业成本结构
  • 补提以前年度个税会计分录
  • 可以给农村信用社的存折转账吗
  • 增值税专用发票可以开电子发票吗
  • 自行建造厂房一座,现已完工,经验收后交付费用
  • 增值税电子普通发票怎么下载
  • 印花税记到哪个会计科目
  • 土地闲置费能否扣除
  • 在建工程科目的借方余额表示
  • 汇款退回重新汇到银行卡
  • 房屋交易税费的计算
  • 预提费用年底如何结转
  • 确认无法回收的应收账款会计分录
  • 六月雪的养殖方法和注意事项
  • 软件开发并销售怎么做
  • 劳务费个税扣税
  • 赠与合同的法定撤销和任意撤销
  • 重庆四日游最佳攻略超详细
  • 这张磁盘有写保护无法格式化
  • php字符串定义
  • 采购涉及哪些部门
  • 股票分红怎么扣税
  • 运费抵扣怎么算
  • 税控盘每年的服务费可以抵扣吗
  • 带息应收票据会计处理
  • 增值税免征与即征的区别
  • 项目差旅费能计入项目费用吗
  • 个人所得税申报流程图
  • opencv.
  • php 后期静态绑定
  • thinkphp原理及优缺点
  • 净现值与原始投资额现值
  • 前端必学
  • 帝国cms教程官方完整版
  • 拆迁补偿收入是否缴纳所得税
  • 应收账款让售会计怎么做
  • 差旅费报销相关政策
  • MYSQL数据库使用教程
  • 即征即退增值税怎么申报
  • 对公账户发票和普通发票不一样吗
  • 小规模纳税人企业所得税怎么算
  • 租金收入会计科目
  • 销售旧固定资产开票编码
  • 预收帐款一直挂账好吗
  • 税务会计账务处理一般方法有哪些
  • 应交税费月底怎么结账
  • 小规模附加税减半征收什么时候开始
  • 事业单位收到钱怎么记账
  • 管家婆销售赠品是不是自动结转成本?
  • 购入固定资产怎么折旧
  • mysql密码忘记怎么办
  • Win10 64位系统下鼠标右键刷新没反应的解决方案
  • bd是什么文件
  • centos7图形安装
  • GHOST XP 安装教程
  • chm文件打不开的解决方法
  • 微信小程序页面滚动
  • css border-bottom
  • shell脚本.sh
  • vue做移动端
  • node.js mongodb
  • shell脚本实现自动化巡检报警发送邮箱
  • jquery.validate 自定义验证方法及validate相关参数
  • js闭包作用问题解决应用
  • staticlayout 换行
  • 使用jQuery Rotare实现微信大转盘抽奖功能
  • 国际税收管理处忙不忙
  • 浙江省电税务局电话
  • 契税完税证明遗失
  • 企业营商环境包括哪些内容
  • 新车购置税是在4s店交吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设