前言
在做vue项目中,总会遇到组件引入,在嵌套组件中我们的父级组件中引入子级组件中的值,或者在子组件中我们使用父组件中的值。当我们遇到这样的场景我们应该怎么做,在vue2.0中,我们使用props和emit进行父子之间的通信,兄弟之间用事件中央总线(event bus);在vue3.2的语法中我们则使用defineProps和defineEmits来声明props和emit,用其进行组件之间的传值,那么接下来,我们来看看。
defineProps
-
用于组件通信中父级组件给子级组件传值,其用来声明props,其接收值为props选项相同的值;
-
默认支持常见的类型检查,在ts下,我们需要明确变量的类型,类型经常是我们的自定义类型;
-
只能在 // 子级组件使用defineProps接收值
{{ props.msg }}
defineEmits
-
用于组件通信中子级组件向父级组件传值,其用来声明emit,其接收内容于emit选项一致;
-
只能在 // 父级组件中
defineExpose
-
组件暴露自己的属性以及方法,去供外部使用,常用于父子组件关系;
-
在vue3.2中 setup 挂载到 script (ref默认是关闭的) 是不能直接使用 ref 取到子组件的方法和变量,需要使用defineExpose。
复制// 不在子组件设置defineExpose // 子级组件代码// 父级组件代码{{name}}
复制// 子组件设置defineExpose // 子组件代码// 父级组件代码{{name}}
以上就是前端vue3.2组件通信详解(defineExpose、defineEmits、defineProps)的使用方式,感谢阅读。
请登录后查看评论内容