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

  • 微信聊天查找对方位置(微信聊天内容查找)

    微信聊天查找对方位置(微信聊天内容查找)

  • 美版抖音怎么不能看(下了美版抖音打开什么都没有)

    美版抖音怎么不能看(下了美版抖音打开什么都没有)

  • 华为云盘删除了还能恢复吗(华为云盘删除的视频怎么恢复)

    华为云盘删除了还能恢复吗(华为云盘删除的视频怎么恢复)

  • 苹果6p怎么设置深色模式(苹果6p怎么设置小组件)

    苹果6p怎么设置深色模式(苹果6p怎么设置小组件)

  • 11怎么设置悬浮球(怎么设置悬浮窗口)

    11怎么设置悬浮球(怎么设置悬浮窗口)

  • oppoa59怎么分屏(oppoa59手机怎样分屏)

    oppoa59怎么分屏(oppoa59手机怎样分屏)

  • ldn-al20是华为什么型号(lld一al20是华为什么型号)

    ldn-al20是华为什么型号(lld一al20是华为什么型号)

  • 华为手机淘宝能分身吗(华为手机淘宝能开分身吗)

    华为手机淘宝能分身吗(华为手机淘宝能开分身吗)

  • 苹果se2电池容量多少毫安(苹果12电池容量多少)

    苹果se2电池容量多少毫安(苹果12电池容量多少)

  • 华为一年保修包括什么(华为一年保修收费吗)

    华为一年保修包括什么(华为一年保修收费吗)

  • 苹果home键震动怎么关(苹果home键震动异响)

    苹果home键震动怎么关(苹果home键震动异响)

  • 联想t530现在相当于什么水平(联想t530i)

    联想t530现在相当于什么水平(联想t530i)

  • 小米8无限重启解决方法(小米8无限重启mi界面后无法开机)

    小米8无限重启解决方法(小米8无限重启mi界面后无法开机)

  • 数据透视表字段名无效什么意思(数据透视表字段名无效怎么解决)

    数据透视表字段名无效什么意思(数据透视表字段名无效怎么解决)

  • 路由器在osi哪一层(路由器是在osi模型中的哪一层)

    路由器在osi哪一层(路由器是在osi模型中的哪一层)

  • qq相册占手机内存吗(qq同步怎么把照片同步到手机相册)

    qq相册占手机内存吗(qq同步怎么把照片同步到手机相册)

  • 企业qq可以发群消息吗(企业qq可以发群公告吗)

    企业qq可以发群消息吗(企业qq可以发群公告吗)

  • 手机出现彩屏怎么办(手机出现彩屏怎么办OPPO)

    手机出现彩屏怎么办(手机出现彩屏怎么办OPPO)

  • 手机qq如何连接打印机(手机QQ如何连接电脑查看文件)

    手机qq如何连接打印机(手机QQ如何连接电脑查看文件)

  • 抖音怎么解除身份证绑定(抖音怎么解除身份认证不注销账号)

    抖音怎么解除身份证绑定(抖音怎么解除身份认证不注销账号)

  • 小红书什么时候能恢复下载(小红书什么时候可以开店的)

    小红书什么时候能恢复下载(小红书什么时候可以开店的)

  • 蓝牙耳机充电仓怎么用(蓝牙耳机充电仓可以单独充电吗)

    蓝牙耳机充电仓怎么用(蓝牙耳机充电仓可以单独充电吗)

  • iphone怎么设置屏幕自动关闭时间(iphone怎么设置屏幕不转动)

    iphone怎么设置屏幕自动关闭时间(iphone怎么设置屏幕不转动)

  • 如何修改exe程序(怎么修改exe程序)

    如何修改exe程序(怎么修改exe程序)

  • 专用发票和普通票有区别吗
  • 贷款利息收入如何开票
  • 实收资本记账凭证摘要怎么写
  • 工资 小数点
  • 稿费计入成本怎么做账
  • 手撕票几个点
  • 出售闲置的材料物资
  • 分期收款销售会计分录(现销)
  • 原材料出现贷方余额
  • 电子缴税付款凭证怎么做账
  • 投资收益的表现形式
  • 核定征收未分配利润分红分录
  • 房地产企业未出售的房子是否要交房产税
  • 劳务派遣直接支付工资吗
  • 税务登记需要什么资料2022
  • 个税滞纳金如何调增所得税费用
  • 将自产货物用于在建工程
  • 销售产品的成本属于什么科目
  • 未计提印花税会计分录
  • 1697508750
  • 新版edge浏览器兼容性视图怎么设置
  • 卸载了驱动程序会怎么样
  • 公司股权变更要换营业执照吗
  • 银行存款日期和起息日期不一样
  • windows11怎么查看显卡
  • win8系统出现你的电脑遇到问题需要重新启动
  • linux从入门到什么搞笑
  • 如何暂停win11更新
  • 企业要方便客户与企业的沟通,尽可能降低
  • 分配结转制造费用时借方科目
  • 公司缴纳的公积金什么时候到账
  • antd 级联多选
  • mac应用程序图标
  • phpinfo页面
  • 缅甸安达曼海
  • 短视频小程序源码
  • zendframework3
  • laravel distinct
  • 逾期增值税扣税凭证抵扣管理办法
  • 盘盈的存货计入哪个科目
  • thinkphp i方法
  • 投资性房地产的减值准备可以转回吗
  • 织梦怎么导入数据库
  • 织梦配置文件
  • MongoDB aggregate 运用篇个人总结
  • 租赁收入的成本包括哪些
  • 民办非企业的税务登记国税还是地税
  • 应交税费的明细账怎么登记
  • windowsserver2008r2开启远程桌面
  • sql server 2008 r2 express 精简版与企业版的区别
  • ibm db2认证
  • 出口退税帐务处理
  • 企业信用公示的时候医疗和生育怎么分开计算
  • 小规模纳税人增值税申报表怎么填
  • 错账更正方法有几种分别适用于什么情况
  • 材料的采购成本包括
  • 业务招待费专用会计科目
  • 核销贷款收回账务怎么做
  • 电子发票上面的字体是什么字体
  • 预收款退回怎么处理
  • 进项票取得晚了怎么抵扣
  • 没有开票的收入要交增值税吗
  • win7硬盘设置在哪里设置
  • 使用二氧化碳灭火器时人应该站在什么位置
  • centos8 redhat
  • win8系统停止服务
  • 如何在linux shell关闭443端口
  • win7怎样安装adb工具
  • perl 批量注释
  • js中的ajax
  • 批处理 dir
  • 批处理命令在windows操作中的典型应用
  • python干嘛用
  • ajax支持浏览器back按钮吗
  • javascript面向对象编程指南 pdf
  • 青岛税税通怎么切换企业
  • 黄金手镯可以卖出去吗
  • 退休人员还写工作单位吗
  • 临沂学生医疗保险多少钱
  • 建筑企业所交的税项有多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设