当前位置:首页 > VUE

vue父子通信如何实现

2026-02-24 22:53:35VUE

父子组件通信方法

Props 传递数据 父组件通过 props 向子组件传递数据。子组件中声明 props 接收父组件传递的值。

父组件模板:

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

子组件代码:

props: ['message']

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

子组件代码:

this.$emit('update', newValue)

父组件模板:

<child-component @update="handleUpdate"></child-component>

高级通信方式

v-model 语法糖 实现父子组件的双向绑定,本质是 props + $emit 的封装。

父组件模板:

<child-component v-model="value"></child-component>

子组件代码:

model: {
  prop: 'value',
  event: 'input'
},
props: ['value']

$refs 访问实例 父组件通过 ref 属性获取子组件实例,直接调用方法或访问数据。

父组件代码:

vue父子通信如何实现

this.$refs.child.methodName()

$parent/$children 子组件通过 $parent 访问父实例,父组件通过 $children 访问子实例(不推荐,耦合性高)。

跨级通信方案

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

祖先组件代码:

provide() {
  return {
    theme: this.themeData
  }
}

后代组件代码:

inject: ['theme']

事件总线 创建空的 Vue 实例作为中央事件总线,实现任意组件间通信。

全局总线:

vue父子通信如何实现

const bus = new Vue()
Vue.prototype.$bus = bus

组件发送事件:

this.$bus.$emit('event-name', data)

组件接收事件:

this.$bus.$on('event-name', data => {})

状态管理方案

Vuex 集中管理 复杂应用建议使用 Vuex 进行状态管理,实现全局数据共享。

store 定义:

const store = new Vuex.Store({
  state: { count: 0 },
  mutations: {
    increment(state) {
      state.count++
    }
  }
})

组件提交变更:

this.$store.commit('increment')

组件访问状态:

this.$store.state.count

分享给朋友:

相关文章

如何实现vue表格联动

如何实现vue表格联动

实现 Vue 表格联动的方法 数据绑定与响应式更新 通过 Vue 的响应式特性,将多个表格的数据绑定到同一个数据源或计算属性。当一个表格的数据发生变化时,另一个表格会自动更新。例如: data()…

vue如何实现

vue如何实现

Vue 实现方法 Vue 提供了多种方式来实现功能,具体取决于需求。以下是一些常见场景的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。在组件中可以通过 pro…

vue如何实现mvvm

vue如何实现mvvm

Vue 的 MVVM 实现原理 Vue 通过数据绑定和响应式系统实现 MVVM(Model-View-ViewModel)模式。其核心在于将数据模型(Model)与视图(View)通过 ViewMod…

java如何实现多线程

java如何实现多线程

实现多线程的方法 在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。此外,还可以使用ExecutorService等高级工具类来管理线程。 继承Thread类…

java如何实现跨平台

java如何实现跨平台

Java实现跨平台的原理 Java通过“一次编写,到处运行”的设计理念实现跨平台能力。其核心机制包括: Java虚拟机(JVM) Java源代码编译为字节码(.class文件),由JVM解释执行。…

vue如何实现加减

vue如何实现加减

在 Vue 中实现加减功能 使用数据绑定和事件处理 通过 Vue 的数据绑定和事件处理机制可以轻松实现加减功能。定义一个数据变量存储数值,通过方法增减该变量。 <template>…