医用B超设备波束形成FPGA实现代码包(含AD采集、发射控制与PCIe传输)
2026/6/8 7:21:04
props 是父组件向子组件传递数据的唯一官方通道,其核心设计原则是:
单向数据流:父 → 子
子组件不得直接修改 props
props 主要用于数据展示和配置,而非业务状态管理
典型使用场景:
表单组件接收初始值
列表组件接收数据源
通用组件接收配置项(如 size、type、disabled)
export default { props: ['title', 'count'] }特点:
无类型校验
无默认值
仅适合 demo 或极简组件
export default { props: { title: String, count: Number } }这是最常用、最安全的方式。
export default { props: { title: { type: String, required: true }, count: { type: Number, default: 0 }, list: { type: Array, default: () => [] }, user: { type: Object, default: () => ({}) }, status: { type: String, validator(value) { return ['success', 'error', 'warning'].includes(value) } } } }| 字段 | 说明 |
|---|---|
| type | 类型校验 |
| required | 是否必传 |
| default | 默认值 |
| validator | 自定义校验 |
String Number Boolean Array Object Date Function Symbolprops: { id: [String, Number] }default: [] default: {}default: () => [] default: () => ({})原因:
防止多个组件实例共享同一引用对象
<Child title="hello" /><Child :count="num" /><Child v-bind="userInfo" />const userInfo = { name: 'Tom', age: 18 }export default { props: { title: String }, mounted() { console.log(this.title) } }<script setup> const props = defineProps({ title: String, count: Number }) </script>也可以解构(注意响应性):
const { title } = defineProps({ title: String })⚠ 解构后不是响应式(除非使用toRefs)
import { toRefs } from 'vue' const props = defineProps({ title: String }) const { title } = toRefs(props)props.count++Vue 会警告:
Avoid mutating a prop directly
const localCount = ref(props.count)<Child :count="count" @update="count++" /><Child v-model="value" />等价于:
<Child :modelValue="value" @update:modelValue="($event)=>(value = $event)" />子组件:
const props = defineProps({ modelValue: String }) const emit = defineEmits(['update:modelValue']) emit('update:modelValue', newValue)父组件数据变化 → 子组件 props 自动更新
props 本身是浅只读响应式
引用类型内部属性可变,但不建议直接改
props.user.name = 'Jack' // 不推荐,破坏数据流| 错误 | 说明 |
|---|---|
| 修改 props | 破坏单向数据流 |
| default 使用对象 | 引用共享 |
| 解构 props 丢响应式 | 需要 toRefs |
| props 承担业务状态 | 应使用 state / store |
| 传值与接收命名不一致 | kebab-case / camelCase |
props 只负责展示和配置
复杂交互通过 emit / v-model
引用类型 default 必须是函数
对外组件必须写完整 props 校验
不要在子组件修改父状态
| 项 | Vue 2 | Vue 3 |
|---|---|---|
| setup | ❌ | ✅ |
| defineProps | ❌ | ✅ |
| v-model | value + input | modelValue + update |
| TS 支持 | 一般 | 非常好 |