스크립트 태그에 setup 속성을 추가하면 설정 구문 설탕을 직접 사용할 수 있습니다.
설정 구문 설탕을 사용한 후에는 설정 함수를 작성할 필요가 없습니다. 구성 요소를 도입하고 등록할 필요가 없으며 속성과 메서드를 반환할 필요가 없으며 직접 사용할 수 있습니다. 템플릿.
<template> <my-component @click="func" :numb="numb"></my-component> </template> <script lang="ts" setup> import {ref} from 'vue'; import myComponent from '@/component/myComponent.vue'; //此时注册的变量或方法可以直接在template中使用而不需要导出 const numb = ref(0); let func = ()=>{ numb.value++; } </script>
defineProps: 하위 구성 요소는 상위 구성 요소에서 props를 받습니다.
defineEmits: 상위 구성 요소의 하위 구성 요소 호출 메서드
defineExpose: 하위 구성 요소 노출 속성을 얻을 수 있습니다. 상위 구성 요소
상위 구성 요소 코드
<template> <my-component @click="func" :numb="numb"></my-component> </template> <script lang="ts" setup> import {ref} from 'vue'; import myComponent from '@/components/myComponent.vue'; const numb = ref(0); let func = ()=>{ numb.value++; } </script>
하위 구성 요소 코드
<template> <div>{{numb}}</div> </template> <script lang="ts" setup> import {defineProps} from 'vue'; defineProps({ numb:{ type:Number, default:NaN } }) </script>
하위 구성 요소 코드
<template> <div>{{numb}}</div> <button @click="onClickButton">数值加1</button> </template> <script lang="ts" setup> import {defineProps,defineEmits} from 'vue'; defineProps({ numb:{ type:Number, default:NaN } }) const emit = defineEmits(['addNumb']); const onClickButton = ()=>{ //emit(父组件中的自定义方法,参数一,参数二,...) emit("addNumb"); } </script>
상위 구성 요소 코드
<template> <my-component @addNumb="func" :numb="numb"></my-component> </template> <script lang="ts" setup> import {ref} from 'vue'; import myComponent from '@/components/myComponent.vue'; const numb = ref(0); let func = ()=>{ numb.value++; } </script>
하위 구성 요소 코드
<template> <div>子组件中的值{{numb}}</div> <button @click="onClickButton">数值加1</button> </template> <script lang="ts" setup> import {ref,defineExpose} from 'vue'; let numb = ref(0); function onClickButton(){ numb.value++; } //暴露出子组件中的属性 defineExpose({ numb }) </script>
부모 구성 요소 코드
<template> <my-comp ref="myComponent"></my-comp> <button @click="onClickButton">获取子组件中暴露的值</button> </template> <script lang="ts" setup> import {ref} from 'vue'; import myComp from '@/components/myComponent.vue'; //注册ref,获取组件 const myComponent = ref(); function onClickButton(){ //在组件的value属性中获取暴露的值 console.log(myComponent.value.numb) //0 } //注意:在生命周期中使用或事件中使用都可以获取到值, //但在setup中立即使用为undefined console.log(myComponent.value.numb) //undefined const init = ()=>{ console.log(myComponent.value.numb) //undefined } init() onMounted(()=>{ console.log(myComponent.value.numb) //0 }) </script>