收藏
回答

[BUG]自定义组件多实例时上下文this错乱、生命周期函数没有执行

问题模块
API和组件

不知道是不是BUG,但是感觉和文档描述的预期不一样,组件生命周期函数难道不是各个实例的吗?。


当页面中已经存在自定义组件的多个实例时(1个或者多个),如果这时候再动态创建一个新的实例,会出现两个问题:

1、这个实例的相关生命周期函数(attached,ready等)不会执行。

2、而且如果通过this.data获取到的数据是“前一个”“最近”一次创建的实例的数据。


第一个问题不知道是不是我理解错了“生命周期函数”,但是第二个感觉应该是个问题。


最后一次编辑于  2017-11-29
回答关注问题邀请回答
收藏

5 个回答

  • 红色星星
    红色星星
    2017-11-29

    是的,是的,之前忽略了这个问题。最后一个wx:key搞定了~~~~

    2017-11-29
    赞同
    回复
  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2017-11-29

    你的意思是,你 wx:for 里面有自定义组件节点?这样的话你要确保 wx:key 被设置了,否则会尝试复用之前的节点(无论是基础组件节点还是自定义组件节点)。

    2017-11-29
    赞同
    回复
  • 红色星星
    红色星星
    2017-11-29

    这算BUG吗?对于类似“每次刷新显示10条最新消息”这类的功能,如何正确处理?因为数组长度是固定的,只是每个item有变化

    2017-11-29
    赞同
    回复
  • 红色星星
    红色星星
    2017-11-29

    终于搞清楚问题出在哪了,我的数据data是个固定长度的数组,比如length为10。每次刷新我虽然是重新定义了一个数组,但是由于长度length没变,组件的更新机制导致没有重新构造组件实例,还是在原组件实例上进行“修改”,所以ready之类的没有执行,而且给人的感觉this上下文还是原来的。



    2017-11-29
    赞同
    回复
  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2017-11-29

    1、必然会执行,每个实例都会;

    2、this是组件的“实例对象”,每个实例会对应一个this。

    2017-11-29
    赞同
    回复