当前位置:首页 > VUE

纯vue实现父子组件

2026-01-22 02:49:39VUE

纯 Vue 实现父子组件

在 Vue 中,父子组件的通信和实现主要通过 props 和 events 完成。以下是实现父子组件的核心方法:

父组件向子组件传递数据

父组件通过 props 向子组件传递数据。子组件需要在 props 选项中声明接收的属性。

父组件代码示例:

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

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

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      parentMessage: 'Hello from parent'
    };
  }
};
</script>

子组件代码示例:

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  props: {
    message: {
      type: String,
      required: true
    }
  }
};
</script>

子组件向父组件发送事件

子组件通过 $emit 触发事件,父组件通过 v-on 监听子组件的事件。

纯vue实现父子组件

子组件代码示例:

<template>
  <button @click="notifyParent">Click me</button>
</template>

<script>
export default {
  methods: {
    notifyParent() {
      this.$emit('child-event', 'Data from child');
    }
  }
};
</script>

父组件代码示例:

<template>
  <div>
    <child-component @child-event="handleChildEvent" />
  </div>
</template>

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

export default {
  components: {
    ChildComponent
  },
  methods: {
    handleChildEvent(data) {
      console.log(data); // 输出: 'Data from child'
    }
  }
};
</script>

使用插槽(Slots)传递内容

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

纯vue实现父子组件

子组件代码示例:

<template>
  <div>
    <slot></slot>
  </div>
</template>

父组件代码示例:

<template>
  <child-component>
    <p>This content is passed from parent</p>
  </child-component>
</template>

动态组件

父组件可以通过动态组件的方式加载不同的子组件。

父组件代码示例:

<template>
  <div>
    <component :is="currentComponent"></component>
  </div>
</template>

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

export default {
  data() {
    return {
      currentComponent: 'ChildComponent'
    };
  },
  components: {
    ChildComponent
  }
};
</script>

以上方法涵盖了 Vue 中父子组件通信的主要方式,包括 props、events、slots 和动态组件。根据实际需求选择合适的方式即可。

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

相关文章

vue实现广告组件

vue实现广告组件

Vue 实现广告组件的核心方法 数据驱动的广告内容渲染 通过 props 接收广告数据(如图片URL、跳转链接等),使用 v-bind 动态绑定属性。典型结构包含 <a> 标签嵌套 <…

vue实现多级组件

vue实现多级组件

Vue 多级组件实现方法 在 Vue 中实现多级组件通常涉及父子组件通信、动态组件或递归组件等技术。以下是几种常见实现方式: 父子组件嵌套 通过逐层嵌套组件实现多级结构,适用于固定层级场景:…

vue组件传值实现分页

vue组件传值实现分页

Vue组件传值实现分页的方法 在Vue中实现分页功能,通常需要父子组件之间的数据传递。以下是几种常见的传值方式: 使用props传递数据 父组件通过props向子组件传递当前页码和总页数等分页信息:…

vue实现倒计时组件

vue实现倒计时组件

Vue 倒计时组件实现 核心思路 通过 setInterval 或 setTimeout 实现时间递减,结合 Vue 的响应式数据更新 UI。需注意组件销毁时清除定时器。 基础实现方案 模板部分…

vue实现下拉框组件

vue实现下拉框组件

Vue 下拉框组件实现 基础实现 创建基础下拉框组件,使用v-model实现双向数据绑定: <template> <div class="dropdown">…

elementui组件

elementui组件

ElementUI 组件概述 ElementUI 是一套基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发中后台系统。以下是其核心组件分类及典型用法。 基础组件 Button…