从标准JS访问Vue组件可以通过以下几种方式实现:
// Vue组件
<template>
<div ref="myComponent">Hello Vue!</div>
</template>
<script>
export default {
mounted() {
// 在组件挂载后,通过this.$refs访问组件实例
const component = this.$refs.myComponent;
console.log(component.textContent); // 输出:Hello Vue!
}
}
</script>
// Vue组件
<template>
<div>
<button @click="emitData">触发事件</button>
</div>
</template>
<script>
export default {
methods: {
emitData() {
// 在组件中触发自定义事件,并传递数据
this.$emit('my-event', 'Hello from Vue!');
}
}
}
</script>
在标准JS中,可以通过addEventListener方法来监听组件触发的事件,并获取传递的数据。例如:
const component = document.querySelector('vue-component');
component.addEventListener('my-event', (event) => {
console.log(event.detail); // 输出:Hello from Vue!
});
// 创建全局事件总线
const eventBus = new Vue();
// Vue组件1
<template>
<div>
<button @click="emitData">触发事件</button>
</div>
</template>
<script>
export default {
methods: {
emitData() {
// 在组件中通过全局事件总线发布事件,并传递数据
eventBus.$emit('my-event', 'Hello from Vue!');
}
}
}
</script>
// Vue组件2
<script>
export default {
mounted() {
// 在组件挂载后,通过全局事件总线订阅事件
eventBus.$on('my-event', (data) => {
console.log(data); // 输出:Hello from Vue!
});
}
}
</script>
通过以上方式,可以在标准JS中访问Vue组件并实现组件间的通信。请注意,以上示例中的代码仅为演示目的,实际使用时需要根据具体情况进行适当的调整。
腾讯技术开放日
云+社区沙龙online [腾讯云中间件]
北极星训练营
北极星训练营
北极星训练营
DBTalk技术分享会
云+社区技术沙龙[第8期]
腾讯云GAME-TECH沙龙
领取专属 10元无门槛券
手把手带您无忧上云