当前位置:首页 > 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组件实现方法

Vue组件的基本实现方法 Vue组件是Vue.js的核心概念之一,用于构建可复用的UI模块。以下是Vue组件的几种常见实现方式: 单文件组件(SFC) 使用.vue文件格式,将模板、脚本和样式封装…

vue实现下拉刷新组件

vue实现下拉刷新组件

Vue 下拉刷新组件实现 核心思路 通过监听 touch 事件计算滑动距离,结合 CSS 过渡动画实现下拉效果,触发刷新回调。 基础实现步骤 监听 touch 事件 在组件 mounted 阶段…

vue实现拖拽实现组件嵌套

vue实现拖拽实现组件嵌套

实现拖拽组件嵌套的核心思路 Vue中实现拖拽组件嵌套需要结合拖拽库(如vuedraggable)和组件递归渲染。核心在于动态管理嵌套数据结构,并通过事件传递实现层级更新。 安装必要依赖 推荐使用v…

vue表格组件实现

vue表格组件实现

Vue表格组件实现 基础表格实现 使用el-table组件实现基础表格功能。安装Element UI后,引入el-table和el-table-column组件。 <template>…

vue 组件实现 遮罩

vue 组件实现 遮罩

Vue 组件实现遮罩层的方法 基础遮罩层实现 创建一个简单的遮罩层组件,使用绝对定位覆盖整个视口。以下是一个基础实现: <template> <div class="mask…

vue实现盖章组件

vue实现盖章组件

实现Vue盖章组件的步骤 组件结构设计 创建一个Vue组件,包含画布元素和必要的控制按钮。画布用于显示盖章效果,按钮用于触发盖章操作。组件需要接收图片和盖章位置等参数。 <template&g…