尚硅谷视频链接
defineProps-只接收
let personList = reactive<personArr>(
[
{id:'qqq1',name:'aaa',age:10,gender:'F'},
{id:'qqq2',name:'vvv',age:30,gender:'F'},
{id:'qqq3',name:'ddd',age:20,gender:'F',x:1}
]
)
<template>
<Person :list="personList"/>
</template>
// 父组件
<template>
<Person :list="personList"/>
</template>
<script lang="ts" setup name="App">
import Person from './components/Person.vue';
import { reactive } from 'vue';
import { type personArr } from '@/types';
let personList = reactive<personArr>(
[
{id:'qqq1',name:'aaa',age:10,gender:'F'},
{id:'qqq2',name:'vvv',age:30,gender:'F'},
{id:'qqq3',name:'ddd',age:20,gender:'F',x:1}
]
)
</script>
<script lang="ts" setup name="Person">
import { defineProps } from 'vue';
defineProps(['list'])
</script>
<template>
<div class="person">
<ul>
<li v-for="item in list" :key="item.id">{{ item.name }} -- {{ item.age }}</li>
</ul>
</div>
</template>
defineProps-接收 + 限制类型
<script lang="ts" setup name="Person">
import { defineProps } from 'vue';
import { type personArr } from '@/types';
defineProps<{list:personArr}>()
</script>
- 如果父传输类型错误,会报错

defineProps-接收 + 限制类型 + 限制必要性(数据可传可不传) + 默认值指定(不传时展示默认值-withDefaults)
- 子:修改为(页面能展示,但是报错)

<script lang="ts" setup name="Person">
import { defineProps,withDefaults } from 'vue';
import { type personArr } from '@/types';
withDefaults(defineProps<{list?:personArr}>(),{
list:[{id:'qqq1',name:'aaa',age:10,gender:'F'}]
})
</script>
<template>
<Person />
</template>
withDefaults(defineProps<{list?:personArr}>(),{
list:()=>[{id:'qqq1',name:'aaa',age:10,gender:'F'}]
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!