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

  • 酷狗音乐怎么调黑白(酷狗音乐怎么调倍速播放)

    酷狗音乐怎么调黑白(酷狗音乐怎么调倍速播放)

  • opporeno7有没有呼吸灯功能(opporeno7有没有呼叫转移)

    opporeno7有没有呼吸灯功能(opporeno7有没有呼叫转移)

  • 华为畅享20pro可以隐藏应用吗(华为畅享20Pro可以反向充电吗?)

    华为畅享20pro可以隐藏应用吗(华为畅享20Pro可以反向充电吗?)

  • 微信锁密码是如何设置的(微信锁密码如何设置vivo)

    微信锁密码是如何设置的(微信锁密码如何设置vivo)

  • 苹果长按图标不出现删除(苹果长按图标不能移动)

    苹果长按图标不出现删除(苹果长按图标不能移动)

  • 红米k20pro要不要贴膜

    红米k20pro要不要贴膜

  • 电子数字计算机特点是(1946年首台电子数字计算机是)

    电子数字计算机特点是(1946年首台电子数字计算机是)

  • 发起拼单怎么取消(发起的拼单如何取消)

    发起拼单怎么取消(发起的拼单如何取消)

  • matlab中eps是什么意思(matlab中eps的值)

    matlab中eps是什么意思(matlab中eps的值)

  • 一个手机可以绑定几个微博(一个手机可以绑定几个电子医保)

    一个手机可以绑定几个微博(一个手机可以绑定几个电子医保)

  • 微信视频看不见对方怎么回事(微信视频看不见人怎么回事)

    微信视频看不见对方怎么回事(微信视频看不见人怎么回事)

  • x轴线性马达和z轴区别(X轴线性马达和Z轴线性马达)

    x轴线性马达和z轴区别(X轴线性马达和Z轴线性马达)

  • ipad air3能用pencil吗(iPad air3能用2代pencil吗)

    ipad air3能用pencil吗(iPad air3能用2代pencil吗)

  • ipada1822适合哪种笔(ipada1822配置)

    ipada1822适合哪种笔(ipada1822配置)

  • 哔哩哔哩33卡怎么注销(哔哩哔哩33卡怎么退钱)

    哔哩哔哩33卡怎么注销(哔哩哔哩33卡怎么退钱)

  • 笔记本sd卡槽有什么用(笔记本sd卡槽有哪些)

    笔记本sd卡槽有什么用(笔记本sd卡槽有哪些)

  • 抖音作品怎么私密(抖音作品怎么私信给好友)

    抖音作品怎么私密(抖音作品怎么私信给好友)

  • 华为nova5pro耳机插哪里(华为nova5pro耳机孔在哪里)

    华为nova5pro耳机插哪里(华为nova5pro耳机孔在哪里)

  • ps暂存盘文件怎么清理(ps暂存盘文件怎么删除)

    ps暂存盘文件怎么清理(ps暂存盘文件怎么删除)

  • 苹果笔记本a1278是哪一年产的(苹果笔记本A1278扬声器更换)

    苹果笔记本a1278是哪一年产的(苹果笔记本A1278扬声器更换)

  • 手机电池显示怎么变成彩色(手机电池显示怎么是黄色的)

    手机电池显示怎么变成彩色(手机电池显示怎么是黄色的)

  • 爱奇艺公司总部在哪(爱奇艺公司总部大楼)

    爱奇艺公司总部在哪(爱奇艺公司总部大楼)

  • word第二行不顶格(word第二行不顶格怎么设置)

    word第二行不顶格(word第二行不顶格怎么设置)

  • 360云盘停用照片怎么办(360云盘个人云盘停止服务怎么找回资料)

    360云盘停用照片怎么办(360云盘个人云盘停止服务怎么找回资料)

  • 开始菜单无法打开(开始菜单无法打开怎么办)

    开始菜单无法打开(开始菜单无法打开怎么办)

  • 税务稽查以前年度进项税额转出
  • 税务登记的期限为几年
  • 研发费用加计扣除是什么意思啊
  • 增值税减免税申报明细表举例
  • 劳务报酬自行申报时间
  • 运输途中的不合理损耗有哪些
  • 所得税多交退税分录
  • 销项税的抵扣
  • 购买的旧机械设备怎么办
  • 公司配股后,会迅速提高公司股票市价
  • 营改增后房地产公司税种及税率
  • 厂房转让企业所得税计算方法
  • 购买投资理财产品放的会计处理怎么做?
  • 研发准备金期末余额帐务处理是怎样的?
  • 购买股权支付的相关税费怎么处理
  • 专用增值税发票怎么作废
  • 如何购买车辆保险
  • 增值税专用发票开票必填项
  • 以前年度损益调整贷方余额表示什么
  • 计提了坏账准备对利润的影响
  • 库存暂估入账
  • 已付款后收到发货通知
  • 补缴去年个税
  • 小规模纳税人销售自己使用过的物品
  • 出纳员交接工作
  • 福利企业即征即退优惠政策
  • 从对公账户取现金有什么影响
  • 抖音小程序任务哪里接
  • 企业采购过程中发生的材料短缺
  • 扣缴个人所得税报告表在哪里打印
  • 小规模拍卖公司怎么开票
  • 收到社保稳岗补贴转入营业外收入要交企业所得税吧
  • 个人所得税现金流量表属于哪一项
  • vue3技巧
  • super命令linux
  • 物业费少交点,有什么理由
  • 个人所得税经营所得税申报表A表
  • 小规模销售收入超过500万
  • 公司向法人借款需要多久还清
  • php cms
  • 企业发行债券的交易费用计入
  • 银行转账支付凭证有效期多久
  • 丢失增值税发票怎么办
  • 年均复合增长率该怎么算?
  • 一般纳税人开普票税率是多少
  • 报表中的存货是什么
  • 股东投入的资金
  • 购入库存商品会计摘要怎么写
  • 先付款后开票如何入账
  • 公司聚餐做什么科目
  • 会计处理的相关知识点
  • 发票遗失证明怎么写范文
  • 事业单位之间
  • 什么是资金结存,它具体包括哪些内容
  • 电子发票显示错误信息是什么原因
  • 资产类科目一般是什么
  • 残疾基金缴纳标准
  • 税务代扣社保怎么办理?
  • 记账凭证负数怎么填写样板
  • 企业内在
  • 企业建账的法律规定
  • mysql中having什么意思
  • windows modules installer占用磁盘高
  • win8操作
  • freebsd的软件管理工具ports详解
  • win7系统打不开win10安装包
  • win10d盘无法格式化,说另一个正在使用
  • free怎么使用
  • 实例的英文
  • unity3ds
  • opengl perspective
  • 安卓查看安装包
  • jquery validation plugin
  • jQuery实现ToolTip元素定位显示功能示例
  • js日历控件代码和效果
  • javascriptj
  • js中!
  • 深圳个体户不注销的后果
  • 江西医保在线缴费
  • 北京市地税局领导
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设