当前位置:首页 > VUE

vue父子组件实现

2026-01-19 05:04:13VUE

Vue 父子组件通信实现

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

父组件向子组件传递数据

父组件通过 props 向子组件传递数据,子组件通过定义 props 接收数据。

父组件模板:

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

父组件脚本:

export default {
  data() {
    return {
      parentMessage: 'Hello from parent'
    }
  }
}

子组件接收 props:

export default {
  props: ['message'],
  mounted() {
    console.log(this.message) // 输出: Hello from parent
  }
}

子组件向父组件传递数据

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

子组件触发事件:

export default {
  methods: {
    sendMessage() {
      this.$emit('message-from-child', 'Hello from child')
    }
  }
}

父组件监听事件:

<template>
  <child-component @message-from-child="handleChildMessage"></child-component>
</template>

父组件处理方法:

vue父子组件实现

export default {
  methods: {
    handleChildMessage(msg) {
      console.log(msg) // 输出: Hello from child
    }
  }
}

使用 v-model 实现双向绑定

Vue 支持通过 v-model 在父子组件间实现双向数据绑定。

子组件实现:

export default {
  model: {
    prop: 'value',
    event: 'input'
  },
  props: ['value'],
  methods: {
    updateValue(newValue) {
      this.$emit('input', newValue)
    }
  }
}

父组件使用:

<template>
  <child-component v-model="parentValue"></child-component>
</template>

使用 $refs 访问子组件

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

父组件模板:

vue父子组件实现

<template>
  <child-component ref="childRef"></child-component>
</template>

父组件脚本:

export default {
  mounted() {
    this.$refs.childRef.childMethod()
  }
}

使用 provide/inject 跨层级传递数据

祖先组件通过 provide 提供数据,后代组件通过 inject 注入数据。

祖先组件:

export default {
  provide() {
    return {
      ancestorData: 'Data from ancestor'
    }
  }
}

后代组件:

export default {
  inject: ['ancestorData'],
  mounted() {
    console.log(this.ancestorData) // 输出: Data from ancestor
  }
}

注意事项

props 应该尽量使用对象形式定义,可以添加类型检查和默认值:

props: {
  message: {
    type: String,
    required: true,
    default: 'Default message'
  }
}

自定义事件名应该使用 kebab-case 命名方式,避免使用大写字母。

避免直接修改 props 的值,应该通过事件通知父组件修改。

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

相关文章

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

Vue组件实现方法

Vue组件实现方法

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

vue组件的实现

vue组件的实现

Vue 组件的实现方式 Vue 组件可以通过多种方式实现,主要包括单文件组件(SFC)、全局注册和局部注册。以下是常见的实现方法: 单文件组件(SFC) 单文件组件是 Vue 最推荐的组件化开发方…

vue实现多级组件

vue实现多级组件

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

vue怎么实现组件缓存

vue怎么实现组件缓存

vue实现组件缓存的方法 在Vue中实现组件缓存可以通过内置的<keep-alive>组件完成,该组件能够缓存不活动的组件实例,避免重复渲染。 使用<keep-alive>基…

vue组件实现

vue组件实现

Vue 组件实现 Vue 组件是 Vue.js 的核心特性之一,允许开发者将 UI 拆分为独立、可复用的模块。以下是实现 Vue 组件的几种常见方式: 单文件组件(SFC) 单文件组件是 Vue 中…