全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-20 7 分钟 ✍️ juanwangdev

组件通信(props/$emit)

父子组件通信是 Vue 组件开发的核心。

Props 传递数据

父组件

vue
<template>
  <ChildComponent :title="pageTitle" :count="5" />
</template>

子组件接收

JavaScript
export default {
  props: {
    title: String,
    count: {
      type: Number,
      default: 0,
      required: true
    }
  }
}

Props 验证

JavaScript
props: {
  name: {
    type: String,
    required: true
  },
  age: {
    type: Number,
    validator: (value) => value >= 0 && value <= 150
  },
  status: {
    type: String,
    validator: (value) => ['active', 'inactive'].includes(value)
  }
}

$emit 触发事件

子组件

vue
<template>
  <button @click="$emit('update', newValue)">更新</button>
</template>

<script>
export default {
  emits: ['update']
}
</script>

父组件监听

vue
<ChildComponent @update="handleUpdate" />

双向绑定

JavaScript
// 子组件
export default {
  props: ['modelValue'],
  emits: ['update:modelValue']
}
vue
<!-- 父组件 -->
<ChildComponent v-model="parentValue" />

Props 是单向数据流,子组件不应直接修改 props。

要点总结

  • Props 用于父传子,支持类型验证和默认值
  • $emit 用于子传父,触发事件
  • v-model 是 props + emit 的语法糖
  • Props 单向流动,不可直接修改

📝 发现内容有误?点击此处直接编辑

← 上一篇 组件生命周期
下一篇 → activated与deactivated
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库