当前位置: 首页 > news >正文

Vue 监听store数据变化

        天冷了,手也冷了,于学问于个人成长不能因为冷而荒废。毕业这么多年,只能感慨。这样努力的工作只是解决了温保问题,何时才能任性的过一回说走就走的自由生活?

        大抵这样的梦想也就只能停留在梦里与期待中吧,与我这样的相同的大多数,我估计也是大有人在吧。只能苦逼中做乐,寻找点真正生活的气息,谁发明了打工,谁发明了苦力?也许只有苦中做乐才能感觉到一点生活的真实与现实的惨烈吧。

        下面对于项目中经常开发的两种状态监听进行总结整理。state是全局一个状态管理类,有时候修改某个属性的值,我们在其他页面或者是模块来处理相应的业务或刷新数据。如何实现呢?

方式一:直接监听属性!

watch: {"$store.state.userMap.name":{handler:function(newVal,oldVal){}}
}

方式二:运算属性及监听配合

computed: {isChanged () {return this.$store.state.userMap.name;  //需要监听的属性}
},
watch: {isChanged(newVal, oldVal) {}
}

区别

  • 区别一:第二种方式是先通过计算属性时刻监测store的数据变化,从而触发isEdit的监听函数,明显需要多一步
  • 区别二:如果监听store的数据是一个对象,第一种方式只需要加上深度监听,也可以实现数据的变化监听,而第二种方式却无法监听到store的对象数据变化,例如

 

watch: {/*此时监听的是对象,当$store.state.userMap.name被修改时,
此时要进行深度监听才能收到数据变化的回调,注意deep:true,意为深度监听,
如果是false,在userMap.name变化时此时是不进行回调的*/"$store.state.userMap.name":{deep:true,handler:function(newVal,oldVal){console.log("数据发生变化"); //修改数据时,立即回调console.log(newVal,oldVal);}}
}
computed: {isChanged () {return this.$store.userMap.name;},
},
watch: {isChanged(newVal, oldVal) {console.log("数据发生变化"); //修改数据时无法回调,因为不是深度监听无法监听到数据变化console.log(newVal,oldVal);}
}

http://www.lryc.cn/news/221652.html

相关文章:

  • 智能交通和自动驾驶技术
  • CentOS7安装部署StarRocks
  • 树形Dp 2925. 在树上执行操作以后得到的最大分数
  • 选择企业云盘?品牌推荐和评价解析
  • redis: 记录一次线上redis内存占用过大问题解决过程
  • 数据资产、数字资产、数据资源及数据资产入表
  • Docker之Centos安装
  • SQL注入漏洞:CMS布尔盲注python脚本编写
  • security
  • 了解web3,什么是web3
  • Harbor企业级Registry基础镜像仓库的详细安装使用教程(保姆级)
  • Linux系统下数据同步服务RSYNC
  • Docker介绍及其常用命令
  • SwissArmyTransformer瑞士军刀工具箱使用手册
  • unity【动画】脚本_角色动画控制器 c#
  • Java代码如何对Excel文件进行zip压缩
  • 改进YOLO系列:12.Repulsion损失函数【遮挡】
  • win11网络连接正常,但是无法正常上网
  • 硬科技企业社区“曲率引擎”品牌正式发布
  • 少儿编程 2023年9月中国电子学会图形化编程等级考试Scratch编程三级真题解析(判断题)
  • MCU常见通信总线串讲(二)—— RS232和RS485
  • LazyVim: 将 Neovim 升级为完整 IDE | 开源日报 No.67
  • 想要搭建网站帮助中心,看这一篇指南就对了!
  • 92.更新一些收藏的经验贴总结学习
  • mysql 问题解决 4
  • llama-7B、vicuna-7b-delta-v1.1和vicuna-7b-v1.3——使用体验
  • 深入理解JVM虚拟机第十九篇:JVM字节码中方法内部的结构和与局部变量表中变量槽的介绍
  • windows好玩的cmd命令
  • 线扫相机DALSA--常见问题四:修改相机参数,参数保存无效情况
  • linux中用date命令获取昨天、明天或多天前后的日期