当前位置:首页 > 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 组件封装方法 封装组件的基本步骤 创建独立的 .vue 文件,包含 template、script 和 style 三个部分。通过 props 接收父组件传递的数据,使用 $emit 触发…

vue radio组件实现

vue radio组件实现

Vue Radio 组件实现 在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性,或者使用第三方 UI 库…

vue如何实现目录组件

vue如何实现目录组件

实现目录组件的基本思路 在Vue中实现目录组件通常需要结合页面内容的结构化数据(如标题层级),通过动态渲染生成可交互的目录。核心步骤包括提取标题、生成目录结构、实现滚动联动等。 提取标题信息 通过…

uniapp组件写法

uniapp组件写法

Uniapp 组件的基本写法 Uniapp 的组件写法与 Vue 类似,支持单文件组件(.vue 文件)。一个基本的组件通常包含三个部分:<template>、<script>…

uniapp如何将底部导航组件化

uniapp如何将底部导航组件化

在 uniapp 中将底部导航组件化 将底部导航组件化可以提高代码复用性和维护性。以下是具体实现方法: 创建自定义底部导航组件 新建一个组件文件,例如 tab-bar.vue,放置在 comp…

vue实现组件

vue实现组件

Vue 实现组件的方法 Vue 中实现组件可以通过多种方式,包括全局注册、局部注册、单文件组件(SFC)等。以下是常见的实现方法。 全局注册组件 全局注册的组件可以在任何 Vue 实例或组件中使用。…