自定义组件data卸载页面无法重置
发布于 6 年前 作者 agu 8770 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

第一步:选择选项,更改data;

第二步返回上一页(关闭了打开组件的页面,组件和页面销毁);

第三步重新进来:页面data是重置的;

第四步重新点击组件内的方法:如图1所示,点击的选项分别是三个,我再点击其他选项时,会显示之前点击过的选项。

组件创建后的打印的data也是没有重置的。

手动清除也是没有效果

  • 预期表现

    销毁组件要清除data

  • 复现路径

代码片段:

https://developers.weixin.qq.com/s/oYy1pMmJ789B

  • 提供一个最简复现 Demo

顺便一问,为什么我的重置操作也有BUG,在点击选项时,更新allFilterData的同时,为什么allFilterDataReset也被赋值了。。

2 回复

你这逻辑有问题,组件中allFilterData是properties,你却在组件中setData修改allFilterData,导致父页面和组件的allFilterData脱钩(至少视图层不一致)。

正确逻辑:

1.页面只传入初始数据,组件中拷贝初始数据作为data,而不是直接setData修改properties

或者2.逻辑移动到页面,组件中通过触发事件通知页面修改allFilterData的数据


——————————————————————————————

我在组件attached时储存了this.data.allFilterData,比较上一次attached(也就是上一次创建的实例)的allFilterData,发现是同一个对象。(不正常)

页面onLoad时也对this.data.allFilterData做了比较,每次onLoad,allFilterData都是新的对象。(正常)

所以应该是你在组件中通过setData修改properties导致的。

你应该在你用这个组件的那个页面去操作吧

回到顶部