当前位置:首页 > 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>

父组件处理方法:

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 属性访问子组件实例。

父组件模板:

<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 命名方式,避免使用大写字母。

vue父子组件实现

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

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

相关文章

vue 实现组件刷新

vue 实现组件刷新

组件局部刷新 在Vue中实现组件刷新可以通过强制重新渲染组件来实现。常用的方法有以下几种: 使用v-if指令 通过切换v-if条件触发组件的销毁和重建 <template> <…

vue实现高阶组件

vue实现高阶组件

Vue 高阶组件实现方法 高阶组件(HOC)是一种复用组件逻辑的模式,通过函数包裹组件并返回新组件实现。Vue 中可通过以下方式实现: 使用 render 函数 通过函数接收组件选项并返回新组件选项…

vue缩放组件实现

vue缩放组件实现

Vue 缩放组件实现方法 基于 CSS transform 实现缩放 通过 CSS 的 transform: scale() 属性实现基础缩放效果。在 Vue 中动态绑定 scale 值,结合鼠标事…

vue 缩放组件实现

vue 缩放组件实现

实现 Vue 缩放组件的核心方法 使用 CSS transform 实现基础缩放 通过动态绑定 transform: scale() 样式实现缩放效果。在 Vue 组件的模板中添加需要缩放的元素,并通…

vue组件实现tab

vue组件实现tab

Vue 组件实现 Tab 切换 基础实现方案 模板结构 使用 v-for 渲染标签页标题,通过 v-show 或 v-if 控制内容显示: <template> <div cl…

vue实现组件重叠

vue实现组件重叠

Vue 实现组件重叠的方法 在 Vue 中实现组件重叠通常需要结合 CSS 的定位属性(如 position、z-index)和 Vue 的动态渲染机制。以下是几种常见实现方式: 使用绝对定位(Ab…