当前位置: 首页 > news >正文

Vue组件通信

下面,我们来系统的梳理关于 **Vue 组件通信基础 ** 的基本知识点:


一、组件通信核心思想

Vue 组件通信的核心目标是实现 数据共享行为协调。根据组件层级关系,主要分为以下场景:

  • 父子组件:Props / 自定义事件
  • 兄弟组件:共同父级 / 全局事件总线 / 状态管理
  • 跨层级组件:Provide/Inject / 状态管理
  • 任意组件:全局状态管理(Vuex/Pinia)

二、基础通信方式

1. Props(父 → 子)

作用:父组件向子组件传递数据
实现

<!-- 父组件 -->
<Child :title="pageTitle" :items="list" /><!-- 子组件 -->
<script>
export default {props: {title: {  // 详细配置type: String,required: true,validator: (v) => v.length > 0},items: {  // 默认值配置type: Array,default: () => []}}
}
</script>

注意事项

  • 遵循单向数据流,子组件不能直接修改 props
  • 复杂对象使用 default: () => ({}) 避免共享引用
  • Vue3 中使用 defineProps 编译器宏(无需导入)

2. 自定义事件(子 → 父)

作用:子组件向父组件传递数据
实现

<!-- 子组件 -->
<button @click="$emit('confirm', data)">提交</button><!-- 父组件 -->
<Child @confirm="handleConfirm" />

进阶用法

  • Vue3 需要显式声明 emits(类型校验):
    emits: {confirm: (payload) => { return typeof payload === 'object'  // 校验函数}
    }
    
  • 使用 defineEmits(组合式 API):
    const emit = defineEmits(['confirm'])
    emit('confirm'

相关文章:

  • HCIP:MPLS LDP的原理和配置
  • 算法-集合的使用
  • mapStruct实体类属性映射工具实现
  • 【Python 进阶3】常见的 call 和 forward 区别
  • 【知识点】第3章:基本数据类型
  • Aviator表达式语法基础和Java实战表达式(电商应用)
  • MDP中的events部分
  • leetcode0513. 找树左下角的值-meidum
  • 使用 LlamaIndex 自定义 Transformation 组件实现节点元数据提取
  • dns的正向解析,反向解析,多项解析,主从配置
  • NodeJS全栈WEB3面试题——P1基础知识:区块链与Web3原理
  • DAY 39 超大力王爱学Python
  • 通过《哪吒》看人生百态
  • MySQL 全量 增量备份与恢复
  • MySQL中SELECT查询的执行顺序
  • MySQL中的字符串分割函数
  • Baklib知识中台重塑企业知识生态
  • 软件测评师教程 第9章 基于质量特性的测试与评价 笔记
  • 量子物理:初步认识量子物理
  • hooks组件-useState
  • 租香港服务器做网站/优化seo教程
  • l外贸独立网站模板/全网营销外包
  • dnf怎么做盗号网站/怎么在百度做免费推广
  • 怎么做分享网站/国外网站
  • 中国人民解放军纪律条令/网络优化工程师前景如何
  • 电商网站开发教学视频/收录平台