关注前端小讴,浏览更多原创技术文章
因为始终在用vue技术栈,因而首次开发小程序尝试应用【mpvue】。只管听闻框架已进行保护,为了上手迅速,不顾可能存在的泛滥bug,决然用起来。
果不其然,一个大bug呈现了:同一路由切换时,上一次的页面数据会保留
我的项目实战bug:mpvue重构cnode社区
github用户已在mpvue的issues给出相干起因:
参考泛滥答案后,用“建页面栈”的方法得以解决:
const dataStack = []; // 建一个页面栈export default { data () { return {...}; }, onLoad () { dataStack.push({ ...this.$data }); // 备份数据 // 其余初始化....肯定要先备份,再做其余初始化 }, onUnload () { Object.assign(this.$data, dataStack.pop()); // 复原数据 }}
因为 vue 的 mixin 中的代码先于页面执行,因而上述办法可优化到 mixin.js 文件中
let mixin = { data() { return { dataStack: [], // 解决mpvue雷同组件数据不更新问题,建设栈堆 }; }, onUnload() { Object.assign(this.$data, this.dataStack.pop()); // 复原 }, onLoad() { this.dataStack.push({ ...JSON.parse(JSON.stringify(this.$data)) }); // 备份 },};export default mixin;
bug得以解决:
性能和我的项目残缺代码参见simon-cnode(mpvue重构cnode社区),欢送star!