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

  • 华为nova10pro怎么设置应用锁(华为nova10pro怎么恢复出厂设置)

    华为nova10pro怎么设置应用锁(华为nova10pro怎么恢复出厂设置)

  • freeme os是什么(freeme os是什么型号手机)

    freeme os是什么(freeme os是什么型号手机)

  • 创维t2和t2pro的区别(创维t2评测)

    创维t2和t2pro的区别(创维t2评测)

  • QQ怎么设置生日提醒(qq怎么设置生日倒计时)

    QQ怎么设置生日提醒(qq怎么设置生日倒计时)

  • vivox27手机怎么设置才能没有垃圾信息(vivox27手机怎么录屏幕视频)

    vivox27手机怎么设置才能没有垃圾信息(vivox27手机怎么录屏幕视频)

  • 电脑显示0x0000000指令(电脑显示0x000000f4)

    电脑显示0x0000000指令(电脑显示0x000000f4)

  • oppo手机出现绿色框锁定(oppo手机出现绿色线条怎么办)

    oppo手机出现绿色框锁定(oppo手机出现绿色线条怎么办)

  • 国外有抖音吗(国际版tiktok下载)

    国外有抖音吗(国际版tiktok下载)

  • 腾讯课堂回看有记录吗(腾讯课堂看回放老师有记录吗)

    腾讯课堂回看有记录吗(腾讯课堂看回放老师有记录吗)

  • 拼多多买家经常退款有影响吗(拼多多买家经常退货会怎么样)

    拼多多买家经常退款有影响吗(拼多多买家经常退货会怎么样)

  • 全景声和5.1声道有什么区别(全景声和5.1声道哪个好听)

    全景声和5.1声道有什么区别(全景声和5.1声道哪个好听)

  • 淘宝商家电话在哪里找(淘宝电话商家电话)

    淘宝商家电话在哪里找(淘宝电话商家电话)

  • 嘀嗒拼车1+1是什么意思(嘀嗒拼车拼车1+1订单怎么收费)

    嘀嗒拼车1+1是什么意思(嘀嗒拼车拼车1+1订单怎么收费)

  • 安卓10更新了什么(安卓10.0更新)

    安卓10更新了什么(安卓10.0更新)

  • 语音识别是计算机在什么方面的应用(语音识别是计算机视觉吗)

    语音识别是计算机在什么方面的应用(语音识别是计算机视觉吗)

  • 苹果手机耳机有声音外放没有声音怎么回事(苹果手机耳机有声音外放没声音怎么设置)

    苹果手机耳机有声音外放没有声音怎么回事(苹果手机耳机有声音外放没声音怎么设置)

  • 为什么抖音搜不到好友(为什么抖音搜不到店铺位置)

    为什么抖音搜不到好友(为什么抖音搜不到店铺位置)

  • oppor17手机尺寸长宽高(oppor17机身尺寸多少厘米)

    oppor17手机尺寸长宽高(oppor17机身尺寸多少厘米)

  • 小米8青春版支持闪充吗(小米8青春版支持无线充电吗)

    小米8青春版支持闪充吗(小米8青春版支持无线充电吗)

  • 乐视手机怎么设置亮度(乐视手机怎么设置青少年模式)

    乐视手机怎么设置亮度(乐视手机怎么设置青少年模式)

  • 华为mate30nfc怎么用(华为mate30nfc怎么用微信支付)

    华为mate30nfc怎么用(华为mate30nfc怎么用微信支付)

  • 淘宝红包不收多久退回(淘宝红包不收多久会退回)

    淘宝红包不收多久退回(淘宝红包不收多久会退回)

  • 手机打开line闪退怎么办(line打开闪退怎么回事)

    手机打开line闪退怎么办(line打开闪退怎么回事)

  • idea如何导入jar包(idea如何导入sql文件)

    idea如何导入jar包(idea如何导入sql文件)

  • 关税完税价格怎样理解
  • 工资计提金额有误怎么调整
  • 支付电费未开具发票
  • 专票现金支付规定
  • 收到单位借款如何处理
  • 出口免税不退税会计分录
  • 跨月的增值税普通发票开错了怎么办
  • 下列支出不可以从其应纳税所得额中扣除的是
  • 当期进项税额大于销项税额
  • 固定资产被盗报警
  • 公司交的拍卖费计入哪个会计科目?
  • 多缴纳的税款不退税怎么入账
  • 销售产品收取的价款
  • 企业购入旧固定资产如何计提折旧
  • 资本公积科目余额能出现小数吗
  • 事业单位利息收入
  • 如何查询当月社保和公积金是否缴纳
  • 咨询服务费怎么结转成本
  • 劳务费可以开吗
  • 小规模纳税人增值税优惠政策2023
  • 建筑工程公司需要注册商标吗
  • 小规模纳税人 核定
  • 中小企业结算时间不超60天
  • 仓库存在不足
  • 预收培训费怎么确认增值税
  • 销售净利率如何分析出来
  • 公司买手机给员工怎么做账
  • 个人劳务费几个点
  • 进程core
  • 固定资产计提折旧的原则
  • 工会经费是职工工资总额的
  • 进口付汇业务流程
  • 赔付支出有哪些
  • 采用公允价值模式计量的投资性房地产处置
  • 计提城建税是在当月提吗
  • 不用财务软件的公司要去吗
  • javaweb实现用户登录注册
  • html在线小游戏
  • php读取文件内容的方法和函数
  • push添加对象
  • 企业所得税没有交
  • 台账如何做到表中分好几个表
  • 税号里面的0和O有区别吗
  • 什么是外勤会计制度
  • 企业净利润怎么查询数据
  • 房屋租赁费怎么记账
  • 记账凭证可以先做贷方吗
  • 利润率多少算好
  • 联营企业子公司是否构成关联方
  • 发票抬头是个人税号怎么填
  • 根据企业会计准则第4号固定资产,企业可选用的折旧方法
  • 旅游饮食服务企业会计核算的特点包括
  • 在mysql中使用视图的限制
  • mysql5.7.32免安装教程
  • sql server 数据
  • window 启动
  • 如何系统还原xp
  • ubuntu15.04安装教程
  • windows预览版和正式版区别
  • window 脚本
  • WINDOWS命令行为什么删除速度很快
  • fsav32.exe是什么进程 有什么作用 fsav32进程查询
  • linux与windows有哪些主要区别
  • win7系统怎么删除输入法
  • win7系统怎么调出运行窗口
  • sendmail端口
  • 最新版win10版本号
  • cocos2dx android游戏防破解总结
  • python内置函数open()的参数用来指定打开文本文件
  • Unity 相关经典博客资源总结
  • unity打包64位出错
  • android的intent介绍
  • node.js使用教程
  • python语言及应用
  • 税务备案超过15天
  • 建筑工程施工企业资质
  • 怎么找到税控系统发票作废怎么操作
  • 焦作国税局官网
  • 怎么查询公司法人电话号码
  • 专用发票章盖在哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设