vue3-setup语法糖 – 父子组件之间的传值
•
前端
近期学习 vue3 的父子组件之间的传值,发现跟vue2的并没有太大的区别,然后发现网络上很少基于setup语法糖的教程,我这边总结一下,希望对大家有所帮助。
一、父组件向子组件传值
父组件向子组件传值的时候,子组件是通过props来接收的,然后以变量的形式将props传递到setup语法糖果中使用(defineEmits的到来!)。如下图所示:
1、父组件传递方式
我是父组件
import Child from './Child'
import {ref} from 'vue'
const parentMsg=ref('父组件传递值是a')
2、子组件接收方式和使用
我是子组件拿到了父组件的值是{{info}}
import { toRefs, defineProps } from 'vue'
const props = defineProps({
//子组件接收父组件传递过来的值
info: String,
})
//使用父组件传递过来的值
const {info} =toRefs(props)
3、效果图

二、子组件向父组件传值
vue3中子组件向父组件传递值和vue2.x的区别是vue2.x使用的是 $emit 而vue3使用的是emit,它们的传值一样都是方法加值,即vue2.x的是this.$emit(‘方法名’,’传递的值(根据需要传或者不传)’),vue3的setup语法糖的是defineEmits。vue3的子传父方式如下所示:
1、子组件的传递方式
import { defineEmits } from 'vue'
// 使用defineEmits创建名称,接受一个数组
const emit = defineEmits(['clickChild'])
const clickChild=()=>{
let param={
content:'b'
}
//传递给父组件
emit('clickChild',param)
}
2、父组件接收与使用
我是父组件子组件传递的值是 {{result}}
import Child from './Child' import {ref} from 'vue' const result=ref('') const clickEven=(val)=>{ console.log(val); result.value=val.content }
3、效果图

三、父组件获取子组件中的属性值
当时用语法糖时,需要将组建的属性及方法通过defineExpose导出,父组件才能访问到数据,否则拿不到子组件的数据
1、子组件的传递方式
我是子组件
性别:{{ sex}}
import { reactive, ref,defineExpose } from "vue";
let sex=ref('男')
let info=reactive({
like:'王者荣耀',
age:18
})
defineExpose({sex, info})
2、父组件显示方式
我是父组件
import Child from './Child'
import {ref} from 'vue'
const testcomRef = ref()
const getSonHander=()=>{
console.log('获取子组件中的性别', testcomRef.value.sex );
console.log('获取子组件中的其他信息', testcomRef.value.info )
}
3、效果图

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/a904a39cb9.html
