当前位置:首页 > VUE

纯vue实现父子组件

2026-02-22 17:55:13VUE

纯 Vue 实现父子组件

在 Vue 中,父子组件的通信和实现是核心功能之一。以下是如何通过纯 Vue 实现父子组件的详细方法。

创建父组件

父组件通常包含子组件,并通过 props 向下传递数据,或通过事件监听子组件的触发。

<template>
  <div>
    <h2>父组件</h2>
    <child-component 
      :message="parentMessage" 
      @child-event="handleChildEvent"
    />
    <p>子组件传递的数据: {{ childData }}</p>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      parentMessage: '这是父组件传递的数据',
      childData: ''
    };
  },
  methods: {
    handleChildEvent(data) {
      this.childData = data;
    }
  }
};
</script>

创建子组件

子组件通过 props 接收父组件的数据,并通过 $emit 触发事件向父组件传递数据。

<template>
  <div>
    <h3>子组件</h3>
    <p>父组件传递的数据: {{ message }}</p>
    <button @click="sendDataToParent">向父组件传递数据</button>
  </div>
</template>

<script>
export default {
  props: {
    message: {
      type: String,
      required: true
    }
  },
  methods: {
    sendDataToParent() {
      this.$emit('child-event', '这是子组件传递的数据');
    }
  }
};
</script>

父子组件通信方式

Props 传递数据
父组件通过 :message="parentMessage" 将数据传递给子组件,子组件通过 props 接收。

事件触发
子组件通过 this.$emit('child-event', data) 触发事件,父组件通过 @child-event="handleChildEvent" 监听并处理。

动态组件与插槽

如果需要更灵活的父子组件交互,可以使用动态组件或插槽。

动态组件
父组件通过 <component :is="currentComponent"></component> 动态加载子组件。

插槽
父组件通过 <slot></slot> 在子组件中插入内容。

<!-- 父组件 -->
<child-component>
  <p>这是插入到子组件的内容</p>
</child-component>

<!-- 子组件 -->
<template>
  <div>
    <slot></slot>
  </div>
</template>

注意事项

  • Props 验证:子组件可以通过 props 定义验证规则,确保数据类型和必要性。
  • 事件命名:自定义事件名建议使用 kebab-case(如 child-event),避免与 HTML 事件冲突。
  • 单向数据流:Props 是单向数据流,子组件不应直接修改父组件传递的数据,而是通过事件通知父组件修改。

通过以上方法,可以高效实现 Vue 父子组件的通信与交互。

纯vue实现父子组件

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

相关文章

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gr…

组件elementui

组件elementui

ElementUI 简介 ElementUI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并开源。它提供了丰富的 UI 组件(如按钮、表单、表格等),适合快速构建企业级中后台产品。…

vue实现tooltips组件

vue实现tooltips组件

实现基础 Tooltip 组件 创建一个名为 Tooltip.vue 的单文件组件,包含模板、样式和逻辑: <template> <div class="tooltip-co…

vue实现组件通信

vue实现组件通信

Vue 组件通信方法 Vue 提供了多种方式实现组件间的通信,适用于不同场景。以下是常见的方法: Props 和 Events 父组件通过 props 向子组件传递数据,子组件通过 $emit…

vue抽屉组件实现

vue抽屉组件实现

Vue 抽屉组件实现 使用 Element UI 实现 Element UI 提供了现成的抽屉组件 el-drawer,可以快速实现抽屉效果。 安装 Element UI: npm install…

vue实现秒表组件

vue实现秒表组件

实现秒表组件的基本思路 使用Vue实现秒表组件需要管理时间状态、控制计时器的启动/暂停/重置功能,并通过计算属性动态显示格式化时间。核心逻辑包括利用setInterval更新计时数据,并通过生命周期钩…