收藏
回答

自定义组件的生命周期moved时什么条件下触发的?

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 需求 自定义组件 客户端 任意 2.0.2

- 需求的场景描述(希望解决的问题)


想测试下自定义组件生命周期moved是在什么情况下才会执行的。


文档中说自定义组件在节点树的位置变化了的时候会触发,试过如下代码:


<page>

    <view wx:if="{{flag}}">111</view>

    <my-component/>

</page>


把flag的值从true变为false,view 不在节点树上,my-component的位置应该是改变了,但my-component自定义组件里面的生命周期moved并没有触发。




- 希望提供的能力


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

2 个回答

  • bobo
    bobo
    2018-09-24

    刚刚试过用 for 列表生成自定义控件,用的是官方示例“自定义组件组件间关系示例”来修改的。自定义组件的 linkChanged 事件也没有触发。


    index.js

    const app = getApp()
     
    Page({
      data: {
        aaa:[
          'bobo','mimi','nini'
        ]
      },
      onLoad: function () {
     
        var that=this;
     
        setTimeout(function(){
     
          that.setData({aaa:['mimi','nini','bobo']});
          console.log('change');
     
        },5000);
     
      },
    })


    index.wxml

    <custom-ul>
      <custom-li wx:for="{{aaa}}" wx:key="{{item}}" data-id="{{item}}"> item</custom-li>
      <custom-li> item 2 </custom-li>
    </custom-ul>


    2018-09-24
    赞同
    回复
  • 卢霄霄
    卢霄霄
    2018-09-23

    想了下。。好像我觉得能触发的情况,只有列表渲染的时候,改变列表顺序。。有啥用呢?

    2018-09-23
    赞同
    回复 2
    • bobo
      bobo
      2018-09-24

      谢谢你的提醒,我再试下列表的情况。目前想到的可能用处是在用户手动调整ui方面~

      2018-09-24
      回复
    • 卢霄霄
      卢霄霄
      2018-09-24回复bobo

      主要是列表的改变肯定是我代码控制的。。那么moved的情况我肯定是知道的。。实际场景确实没用过moved

      2018-09-24
      回复