当前位置:首页 > VUE

vue父子组件实现

2026-02-19 21:26:02VUE

父子组件通信方式

Vue中父子组件通信主要通过props和自定义事件实现。父组件向子组件传递数据使用props,子组件向父组件传递数据使用自定义事件。

父组件向子组件传值

父组件通过props向下传递数据给子组件。子组件需要显式声明接收的props。

父组件模板:

<template>
  <child-component :message="parentMessage"></child-component>
</template>

子组件接收:

export default {
  props: ['message'],
  // 或者带类型检查
  props: {
    message: String
  }
}

子组件向父组件传值

子组件通过$emit触发自定义事件,父组件通过v-on监听这些事件。

子组件触发事件:

this.$emit('update', newValue)

父组件监听:

<child-component @update="handleUpdate"></child-component>

双向绑定实现

使用v-model语法糖可以简化双向数据绑定。

vue父子组件实现

子组件实现:

export default {
  model: {
    prop: 'value',
    event: 'input'
  },
  props: ['value']
}

父组件使用:

<child-component v-model="parentData"></child-component>

插槽内容分发

父组件可以通过插槽向子组件传递模板内容。

子组件定义插槽:

<slot name="header"></slot>
<slot></slot>  <!-- 默认插槽 -->

父组件使用:

vue父子组件实现

<child-component>
  <template v-slot:header>
    <h1>标题</h1>
  </template>
  <p>默认内容</p>
</child-component>

依赖注入

对于深层嵌套组件,可以使用provide/inject避免逐层传递props。

祖先组件:

export default {
  provide() {
    return {
      sharedData: this.sharedData
    }
  }
}

后代组件:

export default {
  inject: ['sharedData']
}

访问组件实例

父组件可以通过ref访问子组件实例。

父组件:

<child-component ref="child"></child-component>
this.$refs.child.methodName()

子组件可以通过$parent访问父组件实例,但不推荐这种紧耦合方式。

标签: 父子组件
分享给朋友:

相关文章

vue实现组件刷新

vue实现组件刷新

强制重新渲染组件 使用 this.$forceUpdate() 方法可以强制 Vue 实例重新渲染,但不会更新子组件。适用于依赖非响应式数据的情况。 methods: { refreshComp…

vue实现附件组件

vue实现附件组件

Vue 实现附件组件的方法 基础组件结构 使用 Vue 的单文件组件(SFC)方式创建一个基础的附件上传组件。需要包含文件选择、预览、上传和删除功能。 <template> <…

vue实现拖拽组件

vue实现拖拽组件

Vue 实现拖拽组件的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue实现动态组件

vue实现动态组件

动态组件的基本概念 在Vue中,动态组件允许根据条件或用户交互切换不同的组件,无需重复编写模板逻辑。核心是通过<component>标签的is属性绑定组件名或组件对象。 使用is属性切换…

vue实现组件跳转

vue实现组件跳转

vue实现组件跳转的方法 在Vue中实现组件跳转有多种方式,以下是常见的几种方法: 使用<router-link>进行导航 <router-link to="/path/to/c…

vue组件如何实现

vue组件如何实现

Vue 组件实现方法 Vue 组件可以通过多种方式实现,以下是常见的几种方法: 单文件组件 (SFC) 使用 .vue 文件格式,包含模板、脚本和样式三部分: <template>…