不是发哥
不是发哥
  • 发布:2020-06-23 11:21
  • 更新:2020-06-23 11:26
  • 阅读:2545

【报Bug】全局mixin在H5下生命周期created、mounted会被重复执行几百次

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10-1909

HBuilderX类型: 正式

HBuilderX版本号: 2.7.14

浏览器平台: Chrome

浏览器版本: 最新

项目创建方式: HBuilderX

示例代码:
import Vue from 'vue'  
import App from './App'  

Vue.config.productionTip = false  

App.mpType = 'app'  

const app = new Vue({  
    ...App  
})  
app.$mount()  

Vue.mixin({  
  created() {  
    console.log(111)  
  }  
})

操作步骤:
import Vue from 'vue'  
import App from './App'  

Vue.config.productionTip = false  

App.mpType = 'app'  

const app = new Vue({  
    ...App  
})  
app.$mount()  

Vue.mixin({  
  created() {  
    console.log(111)  
  }  
})

预期结果:

只执行一次

实际结果:

执行N次,页面越多执行越多次,我的项目被执行了几百次

bug描述:

majin.js

2020-06-23 11:21 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

mixin是对所有vue组件进行的,你页面上有多少vue组件实例,就会触发多少次,如果要对页面生命周期mixin,那就是用onLoad等页面级生命周期

  • 不是发哥 (作者)

    经过测试连image组件、navigator都被触发了,导致一个页面可能会被触发成百上千次。

    2020-06-23 11:31

  • w***@foxmail.com

    uniapp说的确实有道理,但是页面上的vue组件并没有初始化和渲染,只在首页的时候就多次执行,这作何解释呢?

    2021-01-06 17:24

  • DCloud_UNI_FXY

    回复 w***@foxmail.com: 所有的内置组件比如view,image,navigator,都是vue的自定义组件,所以都受全局mixin影响

    2021-01-07 14:48

该问题目前已经被锁定, 无法添加新回复