【发布时间】:2021-05-30 17:18:07
【问题描述】:
我有一个使用@vue3/cli 项目创建的非常简单的项目。我的问题很直接,但我找不到简单的或任何解决方案。
我有两个组件。一个组件在视频标签中具有网络摄像头视频渲染,另一个组件具有 html5 画布。我想在另一个组件的画布上渲染一部分视频。我不知道如何将视频图像从一个组件发送到另一个组件。
两个组件都注册在同一层次的一个视图下。
Home -->
WebCam.vue
Canvas.vue
现在我尝试使用 -
将视频作为数据从 WebCam 组件发送到 Canvas 组件this.emitter.emit('cam-image', {
id:'video'
image: this.video
})
我正在使用 mitt 来发出事件,但这根本不起作用。我看到收到的数据作为整个视频标签记录在我的控制台中。
this.emitter.on("cam-image", data => {
console.log(data.image)
this.canvasContext.drawImage(
data.image,
0, 0,
300, 150,
0, 0, this.canvasWidth, this.canvasHeight
);
})
因此,如果我可以将 Canvas 组件中的 refs 访问到 WebCam 组件并直接从那里渲染图像。
【问题讨论】:
-
你可以尝试使用 vuex 进行存储和状态管理
-
@tuhin47 如何使用 veux 来做到这一点?
-
@tuhin47 我得到了一个答案,但我觉得使用提供和注入对于这个简单的用例来说太过分了。你能告诉我你的解决方案吗?我基本上做了什么,我将 this.$refs.webcam 存储到存储中的网络摄像头值,并尝试在另一个组件中访问该值。它没有任何失败。
标签: javascript vue.js canvas vuejs3