父子组件
- props / $emit
- provide / inject : 父组件向深层子组件传递
export default {
provide: {
message: 'Hello from ancestor'
}
};
export default {
inject: ['message']
};
- attrs/listeners
- ref
- v-model
兄弟组件
- 父组件中转:兄弟组件不直接通信,通过父组件中转
通用
- EventBus : 事件总线
import Vue from 'vue';
export const eventBus = new Vue();
import { eventBus } from './event-bus.js';
eventBus.$emit('custom-event', 'Some data');
import { eventBus } from './event-bus.js';
export default {
created() {
eventBus.$on('custom-event', (data) => {
console.log(data);
});
}
};
npm install mitt
import mitt from 'mitt';
export const eventBus = mitt();
import { eventBus } from './event-bus.js';
eventBus.emit('custom-event', 'Some data');
import { eventBus } from './event-bus.js';
import { onMounted, onUnmounted } from 'vue';
onMounted(() => {
const handler = (data) => {
console.log(data);
};
eventBus.on('custom-event', handler);
onUnmounted(() => {
eventBus.off('custom-event', handler);
});
});
- Vuex / Pinia