组件之间的传值大家都很熟悉了。很多同学说到VUE3+TS无从下手,所以分享这篇文章,希望大家看完之后能提一下VUE3+TS。平时使用的函数如:ref、reactive、watch、computed等需要先导入才能使用,但是本文介绍的defineProps、withDefaults、defineEmits、defineExpose都是开箱即用的函数无需介绍。父子传值:父组件中defineProps给子组件传值时,通过v-bind绑定一个数据,然后子组件使用defineProps接收数据。可以传递的数据有两种类型:字符串类型和非字符串类型。字符串类型不需要v-bind,非字符串类型需要使用v-bind,可以简写为冒号(:)。/*父组件代码*/父组件
{{title}}
{{list}}将父组件传入的值删除后,默认值发现设置的显示。子组件传值给父组件:当defineEmits子组件传值给父组件时,会调度事件触发父组件中的事件并接收值。给子组件绑定一个@click事件,然后通过defineEmits注册自定义事件。当点击@click事件时,会触发emit调用注册的事件,然后传递参数。非TS声明语法//clickname父组件自定义事件名称letemit=defineEmits(['clickname'])constpostV=()=>{emit('clickname','passedvalueorvariable')}TS声明语法//clickname父组件自定义事件名称letemit=defineEmits<{(e:'clickname',str:string):void}>()constpostV=(str:string):void=>{emit('clickname',str)}如果有多个自定义事件,则这样写:typePerson={name:stringage:number}letemit=defineEmits<{(e:'clickname',str:string):void(e:'getData',per:Person):void}>()constpostV=(str:string):void=>{emit('clickname',str)}constpostVData=(per:Person):void=>{emit('getData',per)}我们使用defineEmits在子组件中添加调度事件:字符串')">子数据到父数据在父组件中使用自定义事件接收子组件传过来的数据:父组件
