父组件代码

    1. <template>
    2. <p>父组件</p>
    3. {{num}}
    4. <button @click="add">+1</button>
    5. <About v-model:child="num"></About>
    6. </template>
    7. <script lang="ts" setup>
    8. import About from "./views/About.vue";
    9. import { ref } from "vue";
    10. const num = ref(20);
    11. const add = () => {
    12. num.value++
    13. }
    14. </script>
    15. <style scoped></style>

    子组件代码

    1. <template>
    2. <p>子组件</p>
    3. {{child}}
    4. <button @click="add">+1</button>
    5. </template>
    6. <script lang="ts" setup>
    7. // 接受父组件传递的值
    8. const props = defineProps({
    9. child:{
    10. type:Number,
    11. default:0
    12. }
    13. })
    14. // 子传父,v-model写法,可以直接修改父组件的值
    15. const emit = defineEmits<{
    16. // update:固定写法,child就是上面的children
    17. (event:'update:child',n:number):void
    18. }>()
    19. let n = props.child;
    20. // 定义事件,把值传递给父组件,
    21. const add = () => {
    22. let res = n++ // props的值不能修改
    23. console.log(res)
    24. emit('update:child',res)
    25. }
    26. </script>
    27. <style scoped></style>