当前位置:首页 > 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 属性获取子组件实例,直接调用方法或访问数据。

父组件代码:

this.$refs.child.methodName()

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

跨级通信方案

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

祖先组件代码:

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

后代组件代码:

inject: ['theme']

事件总线 创建空的 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')

组件访问状态:

vue父子通信如何实现

this.$store.state.count

分享给朋友:

相关文章

vue底层如何实现

vue底层如何实现

Vue 底层的核心实现机制 Vue 的底层实现主要围绕响应式系统、虚拟 DOM 和组件化架构展开。以下是关键技术的详细解析: 响应式系统 依赖追踪与发布订阅模式 通过 Object.definePr…

vue如何实现排序

vue如何实现排序

实现数组排序 在Vue中可以通过计算属性或方法对数组进行排序。使用JavaScript的sort()方法结合Vue的响应式特性实现动态排序。 data() { return { item…

java如何实现多线程

java如何实现多线程

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

vue如何实现滚动

vue如何实现滚动

Vue 实现滚动的方法 使用原生滚动 在Vue中可以直接使用HTML原生滚动,通过CSS设置overflow: auto或overflow: scroll来实现滚动效果。适用于简单场景。 <d…

vue如何实现图

vue如何实现图

Vue 实现图表的方法 Vue 中实现图表可以通过多种方式,常见的有使用第三方库或自定义实现。以下是几种常见的方法: 使用 ECharts ECharts 是一个功能强大的图表库,支持多种图表类型。…

vue 如何实现onshow

vue 如何实现onshow

监听生命周期钩子 在Vue中,可以通过生命周期钩子函数来监听组件的显示状态。mounted和activated钩子常用于处理组件显示时的逻辑。mounted在组件首次挂载时触发,而activated在…