自定义组件的生命周期moved时什么条件下触发的?
发布于 5 年前 作者 ppeng 18085 次浏览 来自 问答
  • 需求的场景描述(希望解决的问题)

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

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

<page>

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

    <my-component/>

</page>

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

  • 希望提供的能力
2 回复

刚刚试过用 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>

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

回到顶部