收藏
回答

自定义组件没有引用也会自动执行

问题模块 框架类型 问题类型 终端类型 操作系统 微信版本 基础库版本
框架 小程序 Bug 客户端 iOS 6.6.2 1.9.97

在使用自定义组件的过程中,发现只要在自定义组件的json文件里面声明了

{

“component”:true

}

那么无论页面有没有usingComponent声明引入这个组件,这个组件的js都会被自动执行,但是组件并不会初始化,这样是正常的么。

例如:

//component.js

console.log(99999)

Component({

})

//component.json

{

"component": true

}

//component.wxml

<view class="demo"></view>


在进入pages/index/inddex的时候,同时这个组件的js也被执行了,会输出99999

不是应该是我在使用的时候才会去动态加载这个组件的文件的么?

最后一次编辑于  2018-06-20
回答关注问题邀请回答
收藏

2 个回答

  • 发芽的土豆
    发芽的土豆
    2018-06-20

    这个是正常的。

    微信小程序会调用所有需要预定义的页面或组件。

    但不会触发 onLoad 事件。

    只有当真正调用的时候才会执行 onLoad 走到内部逻辑。

    也就是说:

    小程序运行 -> 调用所有预定义页面或组件 -> 进入页面 -> 页面onLoad -> 组件onLoad -> ......

    2018-06-20
    赞同 1
    回复 1
    • 西红柿
      西红柿
      2018-06-20

      阿西吧~我说怪不得我在组件里面引入另外一个写好的类,里面的构造函数被执行了。。


      谢谢了~

      2018-06-20
      回复
  • 冬雪飘零bin
    冬雪飘零bin
    2018-06-20

    你的console.log()写在组件对象外面肯定会执行,外面的代码都会事先执行的,页面也是一样



    如果我的回答对你有帮助,请点赞


    2018-06-20
    赞同
    回复 1
    • 西红柿
      西红柿
      2018-06-20

      本质还是由于他会先调用预定义页面或组件,如果没有先调用的话是不会执行的

      2018-06-20
      回复