Vue父组件刷新方法详解·prototype·在子组件中使用$emit触发一个事件

Vue父组件刷新方法详解

一、事件总线(Event Bus)

事件总线就像一个交通警察,负责让不同组件之间传递信息。

创建事件总线:在main.js中初始化一个Event Bus实例。

 // main.js import Vue from 'vue'; Vue.prototype.$bus = new Vue(); 

在子组件中发送消息:使用$bus.$emit发送事件。

 // 子组件中 this.$bus.$emit('refreshEvent'); 

在父组件中监听事件:使用$bus.$on监听事件。

 // 父组件中 this.$bus.$on('refreshEvent', this.refreshMethod); 

二、Vuex状态管理

Vuex就像是项目的大脑,管理着所有组件间的状态。

安装Vuex:在项目中安装Vuex。

创建store:定义一个刷新状态。

 // store.js const store = new Vuex.Store({ state: { refreshing: false }, mutations: { setRefreshing(state, status) { state.refreshing = status; } } }); 

在子组件中触发状态改变:通过store.commit改变状态。

 // 子组件中 this.$store.commit('setRefreshing', true); 

在父组件中监听状态变化:使用watch监听状态变化。

 // 父组件中 this.$watch('refreshing', this.refreshMethod); 

三、使用$emit方法

使用$emit就像是在组件间搭了一座桥梁。

在子组件中使用$emit:触发一个事件。

 // 子组件中 this.$emit('refresh'); 

在父组件中监听事件:监听子组件触发的事件。

 // 父组件中 this.$on('refresh', this.refreshMethod); 

四、使用refs属性

refs就像是一个指针,直接指向子组件。

在子组件中定义方法:定义一个方法触发父组件的刷新。

 // 子组件中 methods: { refreshParent() { this.$parent.refreshMethod(); } } 

在父组件中使用refs:通过refs访问子组件实例并调用方法。

 // 父组件中