位置: IT常识 - 正文

vue3,使用watch监听props中的数据(vue watch监听vuex数据)

编辑:rootadmin
vue3,使用watch监听props中的数据 情况一:监听 props 中基本数据类型

推荐整理分享vue3,使用watch监听props中的数据(vue watch监听vuex数据),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue watch监听vuex,vue里面watch,vue中watch监听对象的变化,vue中watch监听对象的变化,vue中watch监听对象的变化,vue里面watch,vue3中的watch怎么用,vue watch监听方法,内容如对您有帮助,希望把文章链接给更多的朋友!

父组件中对传入数据的处理

const handleClick = () => { testStr.value += 'P'}

子组件中监听传入的数据

watch( () => props.testStr, (newVal, oldVal) => { console.log('监听基本类型数据testStr') console.log('new', newVal) console.log('old', oldVal) })

不能使用

watch( props.testStr, () => { console.log('监听基本类型数据testStr') })

的形式,要使用 getter 函数返回值的形式才能触发监听

情况二:监听 props 中引用数据类型且父组件不改变地址指向

父组件中对传入数据的处理

const handleClick = () => { let name = 'lx' let age = 18 dataList.value.push({ name: (name += '~'), age: (age += 1) })}

子组件中监听传入的数据

watch(props.dataList, (newVal, oldVal) => { console.log('监听引用类型数据dataList') console.log('new', newVal) console.log('old', oldVal)})

当父组件传入的是引用类型数据,且在父组件中没有改变该数据的引用地址时,在子组件中可以直接监听传入的数据

情况三:监听 props 中引用数据类型且父组件改变地址指向

父组件中对传入数据的处理

const handleClick = () => { let name = 'lx' let age = 18 dataList.value=[ { name: (name += '~'), age: (age += 1) } ]}

子组件中监听传入的数据

watch( () => props.dataList, (newVal, oldVal) => { console.log('监听引用类型数据dataList') console.log('new', newVal) console.log('old', oldVal) })

当父组件传入的是引用类型数据,且在父组件中通过赋值的形式,改变引用数据的引用地址时,在子组件中要使用 getter 函数返回值的形式,才能监听传入的数据

总结vue3,使用watch监听props中的数据(vue watch监听vuex数据)

1. watch监听 props 中的基本类型数据,需要通过 getter 函数返回值的形式(()=>props.xxx)才能监听

2. watch监听 props 中的引用类型数据,且父组件中没有改变地址指向时,可以直接监听

3. watch监听 props 中的引用类型数据,且父组件中改变了地址指向时,需要通过 getter 函数返回值的形式(()=>props.xxx)才能监听

4. 开发情景:做瀑布流展示

定义变量:const dataList = ref([])

父组件从接口获取第一页数据,将数据存在dataList中:dataList.value = res.data,注意:此时,已经改变引用类型数据 dataList 的地址指向

子组件通过watch监听传入的 dataList,并且调用 manageData() 方法处理 props.dataList 的数据结构:

watch( () => props.dataList, () => { console.log('监听引用类型数据dataList') manageData() ... // 相应逻辑处理 })

注意:此时可以触发监听

用户下拉刷新操作后,继续发送接口,获取第二页,第三页等等后面的数据,父组件通过 push 操作,将获取到的数据 push 进 dataList 中:

for(let item of res.data){dataList.value.push(item)}

注意:此时,虽然父组件传入的 dataList 的值修改了,但是子组件已经不能触发watch及其处理逻辑了 也就是说,manageData() 方法不能调用,没有做到对后续 push 进来的数据进行数据结构的修改,导致页面展示出现问题

解决办法: 一、使用 computed

const dataListTest = computed(() => { manageData() return props.dataList})

二、使用 watchEffect

watchEffect(() => { manageData()})写在最后

最后的瀑布流展示中,我是直接修改了 props 中的数据,虽然从展示来说没有发现什么问题,但是在 Vue 的官网中是这样说的:

PS:本例子使用语法糖 script setup

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

上一篇:ati2plab.exe是什么进程 ati2plab进程安全吗

下一篇:yolov7模型训练结果分析以及如何评估yolov7模型训练的效果(yolov5模型训练)

  • 三星watch4有心电图功能吗(三星watch4心电图解锁)

    三星watch4有心电图功能吗(三星watch4心电图解锁)

  • wps怎么居中到正中间(wps怎么居中到正中间左右对齐)

    wps怎么居中到正中间(wps怎么居中到正中间左右对齐)

  • 拼多多在哪里看消费记录(拼多多在哪里看消费总额)

    拼多多在哪里看消费记录(拼多多在哪里看消费总额)

  • 电脑如何分区(惠普笔记本电脑如何分区)

    电脑如何分区(惠普笔记本电脑如何分区)

  • 手机留言怎么设置(手机怎么设置留言功能在哪查看)

    手机留言怎么设置(手机怎么设置留言功能在哪查看)

  • 笔记本电脑最大内存是多少g(笔记本电脑最大支持容量是什么意思)

    笔记本电脑最大内存是多少g(笔记本电脑最大支持容量是什么意思)

  • 快手私信删除了为啥还显示(快手私信删除了还能查到吗)

    快手私信删除了为啥还显示(快手私信删除了还能查到吗)

  • 抖音音浪怎么提不了现(抖音音浪怎么提取现金)

    抖音音浪怎么提不了现(抖音音浪怎么提取现金)

  • 华为三键导航在哪里设置(华为三键导航在哪设置)

    华为三键导航在哪里设置(华为三键导航在哪设置)

  • 发送已读回执是什么意思(发送已读回执是我已读还是对方已读)

    发送已读回执是什么意思(发送已读回执是我已读还是对方已读)

  • iphonese2支持无线充电吗(苹果se2可以无线)

    iphonese2支持无线充电吗(苹果se2可以无线)

  • 苹果7有256g的吗(苹果七有256g的吗)

    苹果7有256g的吗(苹果七有256g的吗)

  • 苹果新手机充电注意事项(苹果新手机充电发热很烫 什么原因)

    苹果新手机充电注意事项(苹果新手机充电发热很烫 什么原因)

  • 不是好友怎么举报(不是好友怎么举报朋友圈)

    不是好友怎么举报(不是好友怎么举报朋友圈)

  • 开启云服务有什么坏处(开启云服务有什么好处)

    开启云服务有什么坏处(开启云服务有什么好处)

  • 苹果7一直无服务怎么回事(苹果7一直无服务怎么办)

    苹果7一直无服务怎么回事(苹果7一直无服务怎么办)

  • 手机qq怎么取消挂件(手机qq怎么取消自动回复)

    手机qq怎么取消挂件(手机qq怎么取消自动回复)

  • 手机飞行模式有辐射吗(手机飞行模式有wifi可以用微信吗)

    手机飞行模式有辐射吗(手机飞行模式有wifi可以用微信吗)

  • vivos5怎么开启隐私空间(vivos5隐藏图标怎么设置)

    vivos5怎么开启隐私空间(vivos5隐藏图标怎么设置)

  • 抖音怎么取消年龄2019(抖音怎么取消年度报告数据)

    抖音怎么取消年龄2019(抖音怎么取消年度报告数据)

  • 苹果11的充电器和以往的不一样吗(苹果11的充电器14pro能用吗)

    苹果11的充电器和以往的不一样吗(苹果11的充电器14pro能用吗)

  • 华为方舟编译器支持机型(华为方舟编译器下载官网)

    华为方舟编译器支持机型(华为方舟编译器下载官网)

  • 黑鲨手机开发者选项在什么地方(黑鲨手机开发者模式)

    黑鲨手机开发者选项在什么地方(黑鲨手机开发者模式)

  • 为什么打别人电话一直在通话中(为什么打别人电话响了自动挂断)

    为什么打别人电话一直在通话中(为什么打别人电话响了自动挂断)

  • 在win7中,为什么任务栏无法显示在最前面?(win7为什么这么多人用)

    在win7中,为什么任务栏无法显示在最前面?(win7为什么这么多人用)

  • 【学Vue就跟玩一样】组件-单文件组件(vue该怎么学)

    【学Vue就跟玩一样】组件-单文件组件(vue该怎么学)

  • 税收职能和作用
  • 招标文件费属于哪类税收编码
  • 居民企业股权转让所得
  • 出口专用发票应在哪里开
  • 税款追征期起算点 增值税重新计算
  • 农产品增值税进项税额核定扣除办法
  • 制造企业售后服务方案
  • 应缴国库款和应交税款
  • 支付开票税款计入什么科目
  • 怎么调整应收账款账龄
  • 自产产品销售增值税
  • 出口退税总是差进项票怎么处理
  • 如何少交点税
  • 出售二手车税收优惠
  • 重疾险可以扣税吗
  • 一般纳税人注销公司流程2023
  • 税收征收管理法
  • 小规模纳税人咨询服务费的税率是多少
  • 建筑包工包料是包哪些
  • 事业单位材料费分析怎么写
  • 转让股权凭证怎么写
  • 主营业务利润计算
  • 票据状态提示付款
  • 当月应计提的折旧额等于
  • 广告公司员工
  • 事业单位收到租金收入
  • 一般纳税人增值税申报表怎么填写
  • linux的使用场合
  • 为什么连接无线网超时
  • wordpress functions.php
  • 汇票本票支票的相同点和不同点
  • 结转存货的成本叫什么
  • 非正常原因造成的损失计入什么科目
  • 波特兰在哪
  • 如何用php制作网页
  • 渐进模式的特点
  • php图形图像处理技术
  • python怎样学
  • win11安卓子系统教程
  • php+flash+jQuery多图片上传源码分享
  • 外地预缴城建税税率
  • 员工意外伤害保险最多赔多少
  • 不能加计扣除的研发费用在辅助账怎么反映
  • php 时间
  • 如何在控制台打印debug里的数据
  • tempdb数据库能删么
  • 代扣车船税手续费按多少返还
  • 利息应怎么录入收入
  • 小规模收入账务
  • mysql数据类型和java对应
  • 银行承兑汇票和贴现的区别
  • 衍生工具什么意思
  • 稳岗返还资金最新账务处理
  • 冲销以前年度多计提的费用分录
  • 增值税进项税转出有哪些
  • 企业会计核算中,对账的内容主要包括
  • 社保申报工伤怎么操作
  • 委托付款做账怎么做
  • 出售固定资产如何缴纳增值税
  • 持有至到期投资改名为
  • 班车租赁发票税率是多少
  • 固定资产怎么录入系统
  • sqlserver2005iis警告
  • mysql主从复制原理以及架构
  • centos7.2安装
  • 计算机彻底删除文件的方法
  • xp系统安装条件
  • 电脑bios怎么设置usb启动
  • windowsaudio服务不存在或已删除
  • mac怎么保存到桌面
  • ubuntu系统键盘无用
  • windows8.1关机在哪
  • cocos2djs
  • nodejs 函数
  • 使用express
  • 如何搭建python项目架构
  • python 备份文件夹
  • 股东向公司借款合法吗
  • 部落冲突显示此不论描述无效
  • 煤矸石占地需要哪些手续
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设