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

  • 如何关闭微信朋友圈广告(如何关闭微信朋友圈广告推广)

    如何关闭微信朋友圈广告(如何关闭微信朋友圈广告推广)

  • vivo NEX 3s屏幕的材质是什么(vivo nex3 5g屏幕)

    vivo NEX 3s屏幕的材质是什么(vivo nex3 5g屏幕)

  • 全民k歌怎么一天升级12(全民k歌怎么开歌房)

    全民k歌怎么一天升级12(全民k歌怎么开歌房)

  • 小红书私信发不出去(小红书私信发不了微信号)

    小红书私信发不出去(小红书私信发不了微信号)

  • 苹果怎么查看所有通话记录(苹果怎么查看所有订单)

    苹果怎么查看所有通话记录(苹果怎么查看所有订单)

  • 微信怎么设置支付页面密码(微信怎么设置支付密码锁不让别人看)

    微信怎么设置支付页面密码(微信怎么设置支付密码锁不让别人看)

  • 为什么soul语音很难匹配到人(为什么soul语音匹配声音小)

    为什么soul语音很难匹配到人(为什么soul语音匹配声音小)

  • 搜狗是搜狐旗下的产品吗(搜狗搜狐是一家公司?)

    搜狗是搜狐旗下的产品吗(搜狗搜狐是一家公司?)

  • 此文件无法播放0xc00d36c4(此文件无法播放,这可能是因为文件类型不受支持)

    此文件无法播放0xc00d36c4(此文件无法播放,这可能是因为文件类型不受支持)

  • 拼多多录播教程(拼多多录播有效果吗)

    拼多多录播教程(拼多多录播有效果吗)

  • iphone查找不可用 无法连接服务器(iphone查找不可用怎么办)

    iphone查找不可用 无法连接服务器(iphone查找不可用怎么办)

  • 荣耀x10手机什么时候发布(荣耀x10手机什么屏幕)

    荣耀x10手机什么时候发布(荣耀x10手机什么屏幕)

  • 笔记本电脑需要无线网卡吗(笔记本电脑需要插电使用吗)

    笔记本电脑需要无线网卡吗(笔记本电脑需要插电使用吗)

  • 苹果x来电闪光灯怎么不亮(苹果X来电闪光灯)

    苹果x来电闪光灯怎么不亮(苹果X来电闪光灯)

  • 怎么查询wifi连接人数(怎么查询WiFi连着几台设备)

    怎么查询wifi连接人数(怎么查询WiFi连着几台设备)

  • 充电宝的灯一直闪怎么回事(充电宝的灯一直亮着充不进去电)

    充电宝的灯一直闪怎么回事(充电宝的灯一直亮着充不进去电)

  • vivox20多久出来的 (vivox20什么时候出的手机)

    vivox20多久出来的 (vivox20什么时候出的手机)

  • 华为手环4pro上市时间(华为手环4pro上市)

    华为手环4pro上市时间(华为手环4pro上市)

  • 手机号虚商什么意思(手机号虚商号可以用吗)

    手机号虚商什么意思(手机号虚商号可以用吗)

  • 手机显示hd要收费吗(手机显示hd要收费不)

    手机显示hd要收费吗(手机显示hd要收费不)

  • 苹果11有广角吗(苹果手机11有广角吗)

    苹果11有广角吗(苹果手机11有广角吗)

  • 标签怎么制作(二维码标签怎么制作)

    标签怎么制作(二维码标签怎么制作)

  • 如何关闭微信小程序功能(如何关闭微信小程序的游戏)

    如何关闭微信小程序功能(如何关闭微信小程序的游戏)

  • qq币怎么赠送(qq币怎么转赠)

    qq币怎么赠送(qq币怎么转赠)

  • 隐藏空间怎么打开(隐藏空间怎么打开华为)

    隐藏空间怎么打开(隐藏空间怎么打开华为)

  • 增值税发票网上勾选平台
  • 个体工商户是否跨省经营
  • 普通发票为什么只能领一张
  • 小额转款
  • 通货膨胀的含义及通货膨胀率的计算
  • 所得税视同销售行为有哪些
  • 小规模纳税人开票税率
  • 企业增资的分录怎么写
  • 企业所得税预缴少申报案例
  • 车险 专票
  • 销售过程中客户买的是什么
  • 技术转让费怎么定价
  • 开了票后才收到工程款怎么做账?
  • 事业单位只能开具0税率的普票
  • 公司注销后虚开发票
  • 固定资产评估是什么单位
  • 免抵退和免退税哪种划算
  • 延期申报增值税罚款
  • 企业借款增加实际成本
  • 企业收入代扣税金应该怎么做会计处理?
  • 无形资产管理费用不计入
  • 月中发当月工资是怎么算的
  • 老板请客吃饭拿餐饮发票公司报销怎么账务处理?
  • 私募证券投资如何交易
  • 财务指标有哪四类
  • 如何开增值税专用发票步骤图解
  • 招聘退休人员北京宿管
  • 仙岩寺庙
  • web前端开发期末试题及答案
  • vuecli3创建项目的过程
  • 年应税额是怎么算的
  • 怎样利用 getnext 命令检索未知对象?
  • ps怎么把图片套入样机快捷键
  • 固定资产记到什么账本
  • 体检费专票可以抵扣吗
  • 研发支出可以全是管理费用
  • Linux下MySQL卸载和安装图文教程
  • 织梦使用教程
  • 生产费用在完工产品和在产品之间的方法
  • 融资租赁公司的风险资产包括哪些
  • 网购会计如何确认成本
  • 外购的商品用于生产经营
  • 核电站弃置费用通常多少钱
  • 增值税直接计算法间接计算法举例
  • 停车位划线费用入什么科目
  • 售后维修的会计分录
  • 房地产企业成本包括哪些
  • 坏账准备?
  • 简易计税项目税率
  • 奖金是职工福利?
  • 失业保险金退回短信
  • 工程用油计入什么科目
  • 发票冲销后还能用吗
  • 交易性金融资产公允价值变动计入
  • 个体户银行开户所需资料
  • 应付款多付了怎么入账
  • 物流到付如何做账务处理
  • 网站和店铺的区别
  • 进项税额转出怎么操作
  • 企业经营规模小怎么办
  • sqlserver性能优化方案
  • 目前用到的两个字符
  • 直接内存访问控制器是什么
  • Linux系统忘记root密码
  • linux tcpping
  • win10连无线网络受限
  • 怎么更换win系统
  • 优化太差
  • ie6-ie10的浏览器
  • jquery 表格 排序
  • 教学实例分析怎么写
  • JavaScript中的数据类型
  • Windows环境下搭建Python开发环境的方法
  • python怎么编函数
  • python运行出现none
  • android 材料设计
  • 个人出租商业用房开票税率
  • 合伙企业所得税账务处理
  • 湖北国税网上办税大厅官网
  • 企业可以出台政策吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设