位置: 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模型训练)

  • 苹果8可以用5g卡吗(苹果8用5g卡 没信号)

    苹果8可以用5g卡吗(苹果8用5g卡 没信号)

  • 快手小店卖出去的货什么时候到账(快手小店卖出去的东西佣金怎么取出来)

    快手小店卖出去的货什么时候到账(快手小店卖出去的东西佣金怎么取出来)

  • 平板电脑卡槽怎么插卡(平板电脑卡槽怎么取出来)

    平板电脑卡槽怎么插卡(平板电脑卡槽怎么取出来)

  • 酷家乐打开白屏怎回事(酷家乐点开白屏)

    酷家乐打开白屏怎回事(酷家乐点开白屏)

  • 小米8找不到OTG(小米8找不到纯净模式)

    小米8找不到OTG(小米8找不到纯净模式)

  • 邮箱已发送不显示附件(邮箱不显示发送成功)

    邮箱已发送不显示附件(邮箱不显示发送成功)

  • rx580显卡上面有个开关是啥(rx5800显卡)

    rx580显卡上面有个开关是啥(rx5800显卡)

  • 手机进水充不上电怎么恢复(手机进水充不上电好修吗)

    手机进水充不上电怎么恢复(手机进水充不上电好修吗)

  • usb2.0是u盘吗(usb2.0是几a)

    usb2.0是u盘吗(usb2.0是几a)

  • 3bar防水是什么意思(3bar防水能用水清洗吗)

    3bar防水是什么意思(3bar防水能用水清洗吗)

  • qq长期不登录会注销吗(QQ长期不登录会怎么样)

    qq长期不登录会注销吗(QQ长期不登录会怎么样)

  • 怎么消除拒绝接入(怎么消除拒接来电?)

    怎么消除拒绝接入(怎么消除拒接来电?)

  • 苹果手机bs货是什么意思(苹果bs机属于国行吗)

    苹果手机bs货是什么意思(苹果bs机属于国行吗)

  • 不能连wifi的电视怎么投屏(不能连接wifi的电视可以看网络电视吗)

    不能连wifi的电视怎么投屏(不能连接wifi的电视可以看网络电视吗)

  • 快手怎么设置直播通知(快手怎么设置直播背景)

    快手怎么设置直播通知(快手怎么设置直播背景)

  • mate30后盖是玻璃还是塑料(mate30后盖玻璃碎了能换电池吗)

    mate30后盖是玻璃还是塑料(mate30后盖玻璃碎了能换电池吗)

  • iphone5s存储内存多大(苹果5s存储)

    iphone5s存储内存多大(苹果5s存储)

  • 快手作品排列怎么设置(快手作品排列怎么调整)

    快手作品排列怎么设置(快手作品排列怎么调整)

  • 手机突然显示不显卡什么原因(手机突然显示不可上网)

    手机突然显示不显卡什么原因(手机突然显示不可上网)

  • 批量重命名不带括号(批量重命名能不能不带括弧)

    批量重命名不带括号(批量重命名能不能不带括弧)

  • iphonexr支持几瓦快充(iphonexr支持多大功率快充)

    iphonexr支持几瓦快充(iphonexr支持多大功率快充)

  • 联想m7206用什么粉盒(联想m7206用什么型号粉盒)

    联想m7206用什么粉盒(联想m7206用什么型号粉盒)

  • 荣耀20摄像头怎么用(荣耀20摄像头怎么拆开)

    荣耀20摄像头怎么用(荣耀20摄像头怎么拆开)

  • 苹果6盲人模式怎么关闭(苹果6盲人模式怎么快捷关闭)

    苹果6盲人模式怎么关闭(苹果6盲人模式怎么快捷关闭)

  • Apache Druid 数据摄取---本地数据和kafka流式数据(apache druid使用)

    Apache Druid 数据摄取---本地数据和kafka流式数据(apache druid使用)

  • 个人生产经营所得税怎么计算
  • 企业所得税的会计处理
  • 转出未交增值税是借方还是贷方
  • 企业信用公示的时效是多久
  • 企业变更股东需要本人到场吗
  • 湖北工会工作网
  • 单位职工住周转房是否缴纳房租
  • 自查补交以前年度增值税怎么做账
  • 公司员工的车外地的停车费怎么做分录
  • 未安装使用
  • 旅行社开具发票
  • 软件开发服务费会计分录
  • 企业股权转让有什么好处
  • 应交增值税计提表表格
  • 流转税率是什么意思
  • 个人对公益事业的认识与看法
  • 其他应付款质保金到期怎么附单据
  • 招待费多少
  • 资产负债率之比
  • 投资收益亏损
  • 在建工程进项税可以抵扣吗
  • 公司开业前启动大会
  • 进口增值税属于海关代征的税收吗
  • win11任务管理器怎么没有了
  • 进口的固定资产包括哪些
  • uniapp获取input的值
  • 微软window
  • 进程rundll32
  • 应收账款收回怎么处理
  • vue默认首页
  • php和js 哪个简单
  • bug的5个级别
  • phpcrawl
  • 爬虫基本原理有哪些
  • yolo算法百度百科
  • thinkphp和php
  • emerge命令
  • 下岗职工生活费停发
  • mysql ndb innodb
  • python2打包
  • 报表中的盈余公积怎么算
  • python怎么用?
  • 公司入股方式有哪几种
  • ibm db2认证
  • 固定资产补提折旧的账务处理
  • 个体的个人所得税怎么交税?
  • 接受投资的固定资产按什么入账
  • 事业单位其他支出科目
  • 土地无形资产要摊销吗
  • 有限合伙企业的特征
  • 管家婆记账可以都有凭证做吗?
  • 供应商退回来的钱应走哪个科目
  • 取得投资时支付的相关税费
  • 非营利组织会计科目账务处理
  • 企业如何建账做账
  • ado connection open.vi
  • mysql复制命令
  • win8系统安装office2010
  • 微软开放式许可协议
  • 电脑主板bios设置图解
  • Windows移动中心里没有无线网络
  • window出现问题
  • synchost.exe - synchost是什么进程 有什么作用
  • linux tomcat怎么启动服务
  • linux软件列表
  • hyper安装win7
  • win10虚拟机不能使用
  • 快速掌握阅读题的技巧
  • js 仿真
  • 如何实现左侧固定,右侧自适应的布局
  • 移动端一般用什么布局
  • JavaScript File API文件上传预览
  • 聊天界面的新消息通知设置 找不到
  • JavaScript中的this
  • jquery mobile 图片滑动
  • 湖南城乡居民医疗保险咨询电话
  • 一般纳税人注销公司需要查账吗
  • 国税局巡察整改方案
  • 融资租赁 合同
  • 税务筹划怎么样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设