Vue.js vue如何应对Howlerjs';运动员的身份

Vue.js vue如何应对Howlerjs';运动员的身份,vue.js,howler.js,vue-reactivity,Vue.js,Howler.js,Vue Reactivity,因此,我需要使用Howler.js播放一些mp3音频,并且需要一个最小的GUI。我创建了这个组件,它是一个按钮,根据播放器的状态显示“播放”或“暂停”图标。代码如下: 显示 从“howler”导入{Howl} 导出默认值{ 道具:[“音频”], 数据:函数(){ 返回{ 玩家:空 } }, 计算:{ 显示(){ console.log('正在更新“isPlaying') 返回this.player&&this.player.playing() } }, 方法:{ toggleAudioPlay

因此,我需要使用Howler.js播放一些mp3音频,并且需要一个最小的GUI。我创建了这个组件,它是一个按钮,根据播放器的状态显示“播放”或“暂停”图标。代码如下:


显示
从“howler”导入{Howl}
导出默认值{
道具:[“音频”],
数据:函数(){
返回{
玩家:空
}
},
计算:{
显示(){
console.log('正在更新“isPlaying')
返回this.player&&this.player.playing()
}
},
方法:{
toggleAudioPlay(){
如果(!this.player){
this.player=新嚎叫({
src:[这个。音频]
})
}
如果(这是isPlaying){
this.player.pause()
}否则{
this.player.play()
}
},
showDuration(){
console.log('持续时间为:',this.player?this.player.Duration():0)
}
}
}
下面是codesandbox上的一组以上代码

它像预期的那样工作。但是思考之后,我开始想它为什么会起作用:
isplay
不仅取决于
this.player
,还取决于
this.player的内部状态。Vue如何知道何时重新计算计算属性
isplay

我在function
isplay
中添加了日志语句,以查看属性何时更新。测试表明它已更新

  • 当玩家第一次被创建时。(正如预期的那样,因为该.player从
    null
    更改为
    this.player
  • 当玩家开始或暂停时,以及在游戏结束时(?Vue如何知道这些是需要重新计算属性的时刻?在调用
    play
    pause
    方法后,玩家仍然是同一玩家,只是
    playing
    方法的结果发生了变化)
  • 调用玩家的任何方法后,Vue是否会重新检查玩家状态

    我添加了
    show
    按钮,以调用播放器的
    duration
    方法,该方法不会更改播放器的播放状态。使用此按钮进行测试表明,
    isplay
    在调用
    duration
    时不会更新,因此看起来Vue确切地知道播放器的哪些方法将更改其状态。这让我很惊讶,因为从技术上讲,任何方法都可能改变玩家的状态,你必须阅读/分析代码,以确定它是否会改变玩家的状态。事实上,Howler.js播放器的
    播放
    方法相当复杂,不仅仅是查询播放器的属性

    我在上查看了Vue的文档,但找不到任何与此相关的内容

    如对Vue的相关文件或代码有任何解释或参考,我们将不胜感激