收藏
回答

自定义组件并没挂载到DOM上,但生命周期触发了

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 微信iOS客户端 6.0+ 2.3.0+

// PageA.wxml

//ComponentA.wxml

这个时候ComponentB没挂载到DOM上面,但是created、attached、ready生命周期都触发了。

最后一次编辑于  2019-09-12
回答关注问题邀请回答
收藏

3 个回答

  • 小程序技术专员-binnie
    小程序技术专员-binnie
    2019-09-16

    这个和是否挂在 dom 下没关系,只要在 shadowTree 下就会有生命周期触发

    com2 组件是写在 index.wxml 里的,也就是说属于 index 的 shadowTree 下,这里没有 wx:if 把它干掉,就肯定会有 com2 组件的生命周期触发。

    虽然最终生成的 composedTree 没有 com2 组件,但是 com2 组件在 index 的 shadowTree 下,所以也会有生命周期触发,这是一直都有的逻辑。

    2019-09-16
    有用
    回复 6
    • 朱德明
      朱德明
      2019-09-16
      但是react、vue的自定义组件的生命周期的不是这样定义的喔=0=
      2019-09-16
      回复
    • 朱德明
      朱德明
      2019-09-16
      这样的话,如果我想在页面加个拦截器的话,代码就非常难写了😢
      2019-09-16
      回复
    • 朱德明
      朱德明
      2019-09-16
      或者你能提供一个方案解决一下我demo上的问题吗?我不希望触发com2的生命周期,但引用关系保持不变,即是index引用com1、com2
      2019-09-16
      回复
    • 小程序技术专员-binnie
      小程序技术专员-binnie
      2019-09-16回复朱德明
      把 wx:if 从 com1 组件的 slot 上移到 index 内的 com2 上就可以
      2019-09-16
      回复
    • 朱德明
      朱德明
      2019-09-16
      举个例子吧: com1是个检查用户是否有权限访问该页面的自定义组件。如果有,就渲染。那如果com1控制不了slot里面组件的生命周期。那我不就每个页面都得在com1外再写一大堆逻辑?
      2019-09-16
      回复
    查看更多(1)
  • 社区技术运营专员-娇华
    社区技术运营专员-娇华
    2019-09-12

    你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2019-09-12
    有用
    回复 18
    • 朱德明
      朱德明
      2019-09-12
      https://developers.weixin.qq.com/s/sRucckmb7mbT
      2019-09-12
      回复
    • 朱德明
      朱德明
      2019-09-12
      这问题影响好大哦,过节都过不好了😢
      2019-09-12
      回复
    • 社区技术运营专员-娇华
      社区技术运营专员-娇华
      2019-09-12回复朱德明

      提供的代码片段有误,请确保能正常运行

      2019-09-12
      回复
    • 朱德明
      朱德明
      2019-09-12
      。。。我这边是正常能跑的喔。。。
      2019-09-12
      回复
    • 朱德明
      朱德明
      2019-09-12
      https://developers.weixin.qq.com/s/pnwtmkmJ7sbO
      2019-09-12
      回复
    查看更多(13)
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-09-12

    不要命名成comN,如com1,com2....这种名字

    试试其他文件名,就好了估计


    不是所有的字母组合都可以用来命名文件或文件夹,有些字母组合是不可以命名文件或文件夹的,如aux、com1、com2、prn、con、nul、等。这些都是设备名,如果用这些字母组合,在window系统下会出现指定的设备名无效的错误提示。在xp系统下,没有任何提示,但是被重新命名的文件名保持之前的无变化。如果遇到这样的情况,可以尝试换一个字母组合来命名


    2019-09-12
    有用
    回复 4
    • 朱德明
      朱德明
      2019-09-12
      应该不是命名的问题,我在实际项目里的自定义组件名字都是比较正常的,都会有这种问题
      2019-09-12
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-09-12回复朱德明
      你不妨换个文件名,试试?
      2019-09-12
      回复
    • 小程序技术专员-binnie
      小程序技术专员-binnie
      2019-09-16回复朱德明
      windows下文件不能用com2命名
      2019-09-16
      回复
    • 朱德明
      朱德明
      2019-09-16
      算我怕了 文件名改了 再看看demo吧,还是有那问题 https://developers.weixin.qq.com/s/jzsKbqmk7cbv 怎么小程序这么多命名方面的潜规则的啊。。。
      2019-09-16
      回复
登录 后发表内容
问题标签