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

  • 外贸企业税务处理方式
  • 主营业务成本大于生产成本
  • 货品调拨的意义
  • 销售商品款项未收的科目名称
  • 研发人员的社保也要进入研发费用吗
  • 工会账户谁来管理
  • 农产品加工增值率怎么算
  • 公司制度奖励怎么写
  • 代开专票作废了扣了两次税怎么办?
  • 增值税只有销项没有进项怎么做账
  • 外购低值易耗品可以抵扣进项税额吗
  • 税收分类编码怎么导出来
  • 建筑行业包含哪些项目
  • 过路费发票可以抵扣增值税吗
  • 所得税申报表中的营业成本包括费用吗
  • 注册资金印花税怎么算
  • 设备安装公司如何经营
  • 工程结算收入以前年度多结转收入怎么处理?
  • 超过五年的未弥补亏损怎么处理?
  • wd discovery怎么安装
  • 设备租赁公司怎么复制赚钱
  • 收不回的心
  • 网络公司的财务主要做什么
  • mac设置在哪里设置
  • 计算土地增值税时增值额的扣除项目包括
  • 广告公司物料报价清单
  • 净损益是
  • 定向增发后送股成本价
  • 三防手机厂商
  • 稿酬所得计入什么科目
  • 免抵退税如何申报增值税
  • 房租违约金怎么开发票
  • php 登陆
  • segment anything model模型 需要的配置
  • 无标题节啥意思
  • php曲线图模板
  • php字符串定义
  • 发票上多盖了一个发票章
  • 境外捐赠入账
  • pycharm pypy
  • 进项税额转出冲减进项税额吗
  • 增值税调整怎么结算
  • 税务机关代开的增值税发票要加盖发票专用章吗?
  • 个人所得税进一步改革方向
  • 开具红字增值税普通发票
  • 天猫的费用
  • 一般纳税人无形资产税率
  • 金税四期可以查香港银行卡吗
  • 一般纳税人劳务费税率是多少2023
  • 注册资本认缴与注册登记实操
  • 员工出差报销的餐费怎么下账
  • 应交税费借方是增加还是减少
  • 出售子公司股权合并报表的会计处理
  • 软件开发公司一般薪水多少
  • 仓库员工工资
  • 员工异地工作
  • 养老保险产生的利息怎么来的
  • 发票验旧就是作废么?
  • 贷款公司如何确定利率
  • 新公司季初资产总额填什么
  • 数据库优化的作用是什么?
  • surface 优惠
  • windows查看电池信息
  • win10ie
  • 如何显示文件后缀win10
  • mpcmdrun.exe是什么进程
  • iwatch命名
  • 表单javascript
  • nodejs项目搭建
  • nodejs xhr
  • 如何关闭危险端口
  • python shape用法
  • unity的shader用法
  • 怎么打印纳税申报单
  • 税务评定等级a是缴纳多少
  • 上海房屋出租交税
  • 存款利息需要交税吗
  • 税务局打印发票的软件是哪个
  • 航天信息的金税盘开票要怎么调格式
  • 广西定额发票查询入口官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设