- 当前 Bug 的表现(可附上截图)
第一步:选择选项,更改data;
第二步返回上一页(关闭了打开组件的页面,组件和页面销毁);
第三步重新进来:页面data是重置的;
第四步重新点击组件内的方法:如图1所示,点击的选项分别是三个,我再点击其他选项时,会显示之前点击过的选项。
组件创建后的打印的data也是没有重置的。
手动清除也是没有效果
- 预期表现
销毁组件要清除data
- 复现路径
代码片段:
https://developers.weixin.qq.com/s/oYy1pMmJ789B
- 提供一个最简复现 Demo
顺便一问,为什么我的重置操作也有BUG,在点击选项时,更新allFilterData的同时,为什么allFilterDataReset也被赋值了。。
你这逻辑有问题,组件中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导致的。
上代码片段吧。最好用第一种方案,页面只传入初始数据,组件内拷贝这份初始数据作为自己的data(不要和properties重名),毕竟这种组件显然是要重用的,不可能在每个页面都写筛选的逻辑。
你应该在你用这个组件的那个页面去操作吧