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

  • 小米悬浮窗小屏怎么开(小米悬浮窗小屏怎么调位置)

    小米悬浮窗小屏怎么开(小米悬浮窗小屏怎么调位置)

  • 电脑飞行模式被隐藏了怎么关(电脑飞行模式被锁住了怎么办)

    电脑飞行模式被隐藏了怎么关(电脑飞行模式被锁住了怎么办)

  • 12123怎么接通人工服务(交管12123怎么打电话)

    12123怎么接通人工服务(交管12123怎么打电话)

  • vivo x27短信铃声怎么设置(vivo短信提示音)

    vivo x27短信铃声怎么设置(vivo短信提示音)

  • 网线过长解决方法(网线太长怎么解决怎么收拾)

    网线过长解决方法(网线太长怎么解决怎么收拾)

  • 朋友圈如何设置成空的(朋友圈如何设置仅对一人可见)

    朋友圈如何设置成空的(朋友圈如何设置仅对一人可见)

  • 抖音评级搬运要删除作品吗(抖音评级搬运怎么申诉)

    抖音评级搬运要删除作品吗(抖音评级搬运怎么申诉)

  • 抖音拍视频用什么软件(抖音拍视频用什么相机)

    抖音拍视频用什么软件(抖音拍视频用什么相机)

  • 怎么删除别人发的朋友圈内容(怎么删除别人发朋友圈的视频文件)

    怎么删除别人发的朋友圈内容(怎么删除别人发朋友圈的视频文件)

  • 笔记本散热加铜管管用吗(笔记本散热加铜管效果)

    笔记本散热加铜管管用吗(笔记本散热加铜管效果)

  • oppo 手机微信视频通话时怎么美颜(oppo手机微信视频横屏怎么关闭)

    oppo 手机微信视频通话时怎么美颜(oppo手机微信视频横屏怎么关闭)

  • 为什么新注册的qq不能登录微信(为什么新注册的账号会出现账号异常)

    为什么新注册的qq不能登录微信(为什么新注册的账号会出现账号异常)

  • iphone储存空间其他怎么清理(iPhone储存空间其他系统数据怎么清理)

    iphone储存空间其他怎么清理(iPhone储存空间其他系统数据怎么清理)

  • 华为b19和b29有啥区别(华为b19是几代)

    华为b19和b29有啥区别(华为b19是几代)

  • 小米手机铃声响三秒自动静音(小米手机铃声响几秒就小声)

    小米手机铃声响三秒自动静音(小米手机铃声响几秒就小声)

  • 华为的语音助手怎么唤醒(华为的语音助手怎么召唤叫什么名字)

    华为的语音助手怎么唤醒(华为的语音助手怎么召唤叫什么名字)

  • 为什么软件会安装失败(为什么软件会安装失败怎么回事)

    为什么软件会安装失败(为什么软件会安装失败怎么回事)

  • 什么是web浏览器(web浏览器手机版)

    什么是web浏览器(web浏览器手机版)

  • 华为mate30保修期多久(华为mate30保修期内后盖碎了)

    华为mate30保修期多久(华为mate30保修期内后盖碎了)

  • 72mbps网速快还是慢(72mbps好还是433mbps好)

    72mbps网速快还是慢(72mbps好还是433mbps好)

  • 双十一买的可以退货退款吗(双十一买的可以换尺码吗)

    双十一买的可以退货退款吗(双十一买的可以换尺码吗)

  • 华为手机换卡怎么换(华为手机换卡怎么换视频)

    华为手机换卡怎么换(华为手机换卡怎么换视频)

  • 手机自动免提怎么关闭(手机自动免提怎么回事)

    手机自动免提怎么关闭(手机自动免提怎么回事)

  • 目前最大的处理器生产厂商是(最大处理器状态是什么)

    目前最大的处理器生产厂商是(最大处理器状态是什么)

  • 巧影怎么叠加两个视频(巧影怎么合成照片)

    巧影怎么叠加两个视频(巧影怎么合成照片)

  • 苹果8支持5g吗(苹果8支持5g嘛)

    苹果8支持5g吗(苹果8支持5g嘛)

  • 3dmark怎么测试显卡(3dmark怎么测试显卡是不是矿卡)

    3dmark怎么测试显卡(3dmark怎么测试显卡是不是矿卡)

  • Win7系统防止锁定的主页被恶意篡改的方法(怎么让win7不锁定)

    Win7系统防止锁定的主页被恶意篡改的方法(怎么让win7不锁定)

  • 新公司开基本户银行选择
  • 机票附加的保险有必要买吗
  • 零售业进销差价会计分录实例
  • 上年城市维护建设税退税怎么记账
  • 季报利润表本期数
  • 票据贴现利息怎么做账
  • 出纳需要填哪些表
  • 企业清算未分配利润不分配要交个税吗
  • 公交车收购
  • 公司代扣代缴社保怎么操作
  • 企业所得税业务费扣除标准
  • 注资的设备出售怎么处理
  • 海关进口关税专用缴款书可以抵扣增值税吗
  • 预收房款发票开具需要注意哪些?
  • 财政授权支付凭证后多久打款
  • 银行手续费跨月怎么计算
  • 小规模纳税人不允许开具零税率发票
  • 稳岗补贴发放给职工需要交个税吗?
  • 五证合一后地税编码怎么查
  • 退税上传,申报文件上传失败
  • 纸巾可以开专票吗
  • 通用机打发票属于什么发票
  • 企业间拆借应收利息记哪个科目?
  • 当月的销项税额要转入哪里
  • 小规模纳税人的认定标准是什么
  • 其他应付款转增股本
  • 去年的发票可以红冲重新开具吗?
  • 收回已核销的坏账并入账是什么意思
  • windows10如何显示桌面图标
  • linux系统之间拷贝文件命令
  • 油费餐费入什么科目
  • php获取文件内容的函数
  • php时间计算
  • 纳税人解除劳动合同证明
  • 绩效奖个人所得怎么算
  • 贷款减值损失准备怎么算
  • 补缴免抵退
  • 金融性资产有哪些
  • 调整以前年度损益调整分录费用调增
  • Vue3中的pinia使用(收藏版)
  • 自贸区的税收优惠
  • php设计思路
  • mongo聚合查询效率问题
  • 生产车间劳务费会计分录
  • 收外汇是一定要交税吗
  • 快递费报销要明细吗
  • 收到税控盘退费怎么做分录
  • 企业捐赠自产产品的所得税处理
  • 所得税季初季末怎么填
  • 所得税调增调减技巧
  • 增值税专用发票的税率是多少啊
  • 施工单位名称变更需不需要单独做一个联络函
  • 不开票销售收入怎么做账务处理
  • 优惠券抵扣账务处理流程
  • 哪些账户期末结账后一定无余额
  • 股东分红按利润表的净利润计算
  • 买二手设备需要签合同吗
  • java异常后面的语句会运行吗
  • windows xp死亡倒计时
  • centos5.4 安装
  • msedge.exe是什么
  • 按住鼠标右键拖动文件
  • JavaScript数组去重
  • script在html中的用法
  • css自学
  • javascript HTML5 canvas实现打砖块游戏
  • jQuery插件安装教程
  • 用python写多线性模型
  • 关于android工程中的assets目录的正确说法
  • 手机屏幕适配
  • 键盘搜索的快捷键
  • jQuery ztree实现动态树形多选菜单
  • android退出功能
  • 服务端测试是什么意思
  • jquery实现轮播图步骤
  • Javascript字符串长度
  • js页面滚动到指定位置
  • 文化公司税务筹划
  • 黑龙江省国家税务局通用定额发票
  • 公寓限购是好事吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设