vue.js - Vuex getter 实时更新 audio.currentTime 状态
问题描述
我想让 Vuex 商店中的音频播放器使用它的数据输出到 Vue 组件中的自定义音频播放器。
在 Vuex 商店中有一个aplayer
播放音乐的 state 属性。
store.js
代码:
state: {
aplayer: new Audio()
},
getters: {
getCurrentTime: state => state.aplayer.currentTime
}
在我想显示aplayer.currentTime
当前歌曲的组件中。我试图通过getPlayer
在计算属性中使用 getter 来获取它。
components.vue
代码:
getCurrentTime() {
return this.$store.getters.getCurrentTime;
}
但是当输出到模板时,当前时间冻结为0。但是,当我按下“暂停”时,当前时间显示正确。
请帮忙。
解决方案
Vue 在观察普通对象时效果最好,但事实Audio
并非如此。Vue 无法检测到currentTime
属性何时发生变化。
从文档:
对象必须是普通的:浏览器 API 对象和原型属性等原生对象将被忽略。一个经验法则是数据应该只是数据——不建议观察具有自己状态行为的对象。
您最好的解决方案是生成您自己的number 属性并在音频播放时使用定期currentTime
同步其值,并在音频暂停时清除间隔。audio.currentTime
setInterval
推荐阅读
- html - Chromium 无法重现 html 视频/mp4 视频
- html - 页面不向下滚动
- ios - 多次解析Json时出错
- vba - 运行时错误“438”:对象不支持此属性或过滤器删除方法
- python-3.x - Numpy根据百分位数删除二维数组的元素
- java - 我如何使用java在mysql数据库中根据日期差异(来自另一个表的日期和当前日期)将表中的特定标志更新为'Y'
- python - 使用scrapy抓取多个页面
- android - Xamarin.Andorid 的 Ble Api 示例
- java - 如何在 Sling 中找到服务器上的 servlet?
- c++ - 如果 copts 不允许系统路径,如何引用外部依赖项使用的系统库?