langyuxiansheng / vue-aliplayer-v2

这是一个基于Alipayer 开发并封装成vue组件的播放器.可播放rtmp,m3u8,mp4....视频.除支持直播流与点播的基础功能外,也支持视频的加密播放、清晰度切换、直播时移等业务场景等.https://help.aliyun.com/document_detail/125548.html?spm=a2c4g.11186623.3.3.4bafbf80OVkZJ9
https://langyuxiansheng.github.io/vue-aliplayer-v2/
MIT License
275 stars 59 forks source link

options 遇到 update loop 错误 #38

Closed litmonw closed 3 years ago

litmonw commented 3 years ago

在使用 vue-aliplayer-v2 时,options 配置如下

  options: {
    isLive: true,
    skinLayout: [
      {
        'name': 'bigPlayButton',
        'align': 'blabs',
        'x': 30,
        'y': 80
      },
      {
        'name': 'infoDisplay'
      },
      {
        'name': 'controlBar',
        'align': 'blabs',
        'x': 0,
        'y': 0,
        'children': [
          {
            'name': 'liveDisplay',
            'align': 'tlabs',
            'x': 15,
            'y': 6
          },
          {
            'name': 'fullScreenButton',
            'align': 'tr',
            'x': 10,
            'y': 10
          },
          {
            'name': 'volume',
            'align': 'tr',
            'x': 5,
            'y': 10
          }
        ]
      }
    ]
  },
    <vue-aliplayer :source="url" ref="VueAliplayer" :options="options" :css-link="player.cssLink" :script-src="player.scriptSrc" />

这样配置后,会遇到报错。

控制台会遇到报错 You may have an infinite update loop in watcher with expression "options"

在源码 watch options 中打印时,会发现,options 数据没有改变,但是被调用了多次。

  options:{   //配置项是对象,只能深度监听
      handler(){
         console.log('options watch');
         this.init();
      },
      deep:true
  }

image

如果 options 不包含 skinLayout 数组时则不会报错。

langyuxiansheng commented 3 years ago

感谢支持与反馈,bug已修复,请更新到1.2.8的版本 新版本更新如下: 1.修复update loop的死循环bug 2.升级SDK版本为2.9.3;

死循环原因为,同一对象重复引用.已经处理了.

litmonw commented 3 years ago

感谢支持与反馈,bug已修复,请更新到1.2.8的版本 新版本更新如下: 1.修复update loop的死循环bug 2.升级SDK版本为2.9.3;

死循环原因为,同一对象重复引用.已经处理了.