问题:最近在开发小程序时候,遇到一个多层级的目录需要反复跳转到同一个组件,当同一个页面组件被反复进入时由于在mpvue中他们用的是一套vm,所以后面渲染的数据就会将前面页面的数据覆盖,这样在我们回退时就不会有以前页面的记录,一直会是最后一张页面的记录
解决:
1、只需要在跳转同一个页面组件的时候把上一个页面组件的数据缓存起来
let pdList;
if(wx.getStorageSync('pdList') && JSON.parse(wx.getStorageSync('pdList')).length){
pdList = JSON.parse(wx.getStorageSync('pdList'));
pdList.push({ ...this.$data });
}else{
pdList = [{ ...this.$data }];
}
wx.setStorageSync('pdList', JSON.stringify(pdList));
2、再点击返回箭头的时候去获取之前存好的数据,然后覆盖$data
onUnload: function () {
let pdList = JSON.parse(wx.getStorageSync('pdList'))
if (pdList.length > 0) {
Object.assign(this.$data, pdList[pdList.length - 1])
pdList.splice(pdList.length - 1, 1)
wx.setStorageSync('pdList', JSON.stringify(pdList));
}
}
到此,该问题解决。