以下代码和内容的使用都是在vue3的setup中(<script setup >),未使用ts。
*使用defineEmits会返回一个方法,使用一个变量emit(变量名随意)去接收
*defineProps是一个函数,参数与vue2的props选项相同且定义出的props对象的值是只读的并且需要用toRef或toRefs转换为响应式数据 当传过来的是原始值时不能修改,当是对象类型时,不能修改对象类型的引用地址 需要emit告诉父组件去修改
![](https://img-blog.csdnimg.cn/img_convert/b888cc2b11c72310cf5c20f694824c5b.png)
1.父子花钱案例
父组件
![](https://img-blog.csdnimg.cn/img_convert/e3ba0df97a84080403c692658ec48950.png)
子组件
![](https://img-blog.csdnimg.cn/img_convert/30e01b088179e95a3650dfe25bdadfea.png)
2.页面显示效果
![](https://img-blog.csdnimg.cn/img_convert/28b5cfe81a945b9b03e22c3dfbc2348e.png)
在父组件中定义一个变量 money 传给子组件
![](https://img-blog.csdnimg.cn/img_convert/12b55162c0400e6ac1eb02ed7b3335e1.png)
在子组件中定义-50和修改为20的方法 分别使用v-model:变量语法糖和正常通知父组件修改数据的方法