当前位置: 首页 > news >正文

vue3 监听props 的变化

再三说明 仅仅个人学习用,不误导别人
我觉得props 会创建对应的属性,去接受这些值,比如传递一个ref的基本值 age
props.age = age.value
传递一个ref的引用值 person
props.person= person.value
传递一个reactive的引用值 person
props.person= person

最开始时候,props指向了一个响应式的reactive person,如果我们手动将person = {} 整个替换掉,是不影响原来指向的值的(setup只在初始化时执行一次,所有一开始props指向的是一个响应式的person,而当前改变的person 并不影响,props当中的person 所以也无法监听)

1、父组件使用reactive 接收数据

let person = reactive({age: 21,name: 'test',info: {a: 1}
});

person 和 info 以及prop都是一个reactive对象,都可以作为watch第一个参数

const props = defineProps({person: {age: Number,name: String,info: {a: Number}}
});可以监听到info 里边某个属性变化
watch(person.info, (value) => {console.log(value);
})
整个info 被替换掉也可以监听到
watch(() => person.info, (value) => {console.log(value);
})
整个person 替换掉 无法被监听,因为props当中的person 指向的是一个已经封装了的reactive对象
如果在父组件当中直接person = newValue props是无法监听到的

2、父组件使用ref 接收数据

let person = ref({age: 21,name: 'test',info: {a: 1}
});

将person.value = { } 整个替换

可以监听到
watch(props, (value) => {console.log(value);
})
无法监听
watch(props.person, (value) => {console.log(value);
})
可以监听到person 被整个替换掉
watch(() => props.person, (value) => {console.log(value);
})

做项目中,我将修改 或者 新增的表单组件分离出去了,每次新增或者修改时候需要给表单组件传递一个person 值,新增时候需要置空,修改时候需要赋予值

我们知道person = {}是没办法监听到的,所以采用

let person = ref({age: 21,name: 'test',info: {a: 1}
});const add= ()=>{person.value = {}
]const add= ()=>{Object.assign(person.value,{age:2,name:'test'})
]

监听变化

http://www.lryc.cn/news/149287.html

相关文章:

  • Docker容器
  • spring 请求等问题
  • 汽车制造行业,配电柜如何实施监控?
  • stable diffusion实践操作-VAE
  • 《Flink学习笔记》——第一章 概念及背景
  • 顺序表链表OJ题(2)->【数据结构】
  • css3有哪些新特性?(包含哪些模块)
  • 【Grasshopper基础15】“右键菜单似乎不太对劲”
  • 华为Mate60低调发布,你所不知道的高调真相?
  • C++(18):命名空间
  • K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(上)
  • 生产环境部署与协同开发 Git
  • Qt/C++编写视频监控系统80-远程回放视频流
  • 用于设计和分析具有恒定近心点半径的低推力螺旋轨迹研究(Matlab代码实现)
  • MongoDB - 构造复杂查询条件执行查询
  • 如何从ChatGPT中获得最佳聊天对话效果
  • 深入浅出:手把手教你实现单链表
  • vite 打包项目后访问显示空白页的问题,开发环境正常,生产环境无报错。
  • 打造成功的砍价营销大解析,销量飙升
  • 【Flink进阶】- Flink kubernetes operator 常用的命令
  • ASP.NET Core 的日志系统
  • android13(T) 以太网设置工具类
  • 电脑报错提示xinput1_3.dll缺失怎么办?xinput1_3.dll丢失的简单恢复方案
  • unity 之参数类型之引用类型
  • SpringBoot自定义工具类—基于定时器完成文件清理功能
  • 安卓设置混淆后,gson报错解决方法
  • WPF实战项目十四(API篇):登录注册接口
  • 10个免费PPT下载资源网站分享
  • SpringCloud入门——微服务调用的方式 RestTemplate的使用 使用nacos的服务名初步(Ribbon负载均衡)
  • Python基础篇(16):python中__new__方法