vue3一个组件触发另外一个组件中(非父子组件)定义的方法
时间: 2023-08-18 10:23:57 浏览: 97
如果两个组件之间没有父子关系,你可以使用一个中央事件总线(Central Event Bus)或者使用 Vuex 状态管理来实现通信。
下面是使用中央事件总线的示例:
1. 在你的项目中创建一个中央事件总线:
```javascript
import { createApp } from 'vue';
const app = createApp({});
const eventBus = app.config.globalProperties.$eventBus = new app;
export default eventBus;
```
2. 在需要调用方法的组件中,使用 `$emit` 方法触发事件:
```javascript
import eventBus from './eventBus';
export default {
methods: {
handleClick() {
eventBus.$emit('eventName', data);
}
}
}
```
3. 在需要监听事件并执行方法的组件中,使用 `$on` 方法监听事件:
```javascript
import eventBus from './eventBus';
export default {
created() {
eventBus.$on('eventName', this.handleEvent);
},
methods: {
handleEvent(data) {
// 执行需要执行的方法
}
}
}
```
这样,当触发 `eventName` 事件时,监听该事件的组件中的 `handleEvent` 方法就会被执行。
如果你需要在多个组件之间共享数据,你可以使用 Vuex 状态管理来实现。具体使用方法可以查看 Vuex 的官方文档。
阅读全文