您當前位置>首頁 » 新聞資(zī)訊 » 小程序相關(guān) >
解決 mpvue 經典 bug:同路(lù)由切換時,上次的數據會保留
發表時間:2021-1-11
發布人:葵宇科技
浏覽次數:64
由于一直在用vue技術(shù)棧,因此初次開發小程序嘗試使用【mpvue】。盡管聽聞框架已停止維護,為了上手迅速,不顧可(kě)能存在的衆多bug,毅然用起來。
果不其然,一個(gè)大bug出現了: 同一路(lù)由切換時,上一次的頁面數據會保留
項目實戰bug: mpvue重構cnode社區
github用戶已在mpvue的issues給出相關(guān)原因:
參考衆多答案後,用“建頁面棧”的辦法得以解決:
const dataStack = []; // 建一個(gè)頁面棧
export default {
data () {
return {...};
},
onLoad () {
dataStack.push({ ...this.$data }); // 備份數據
// 其他初始化....一定要先備份,再做其他初始化
},
onUnload () {
Object.assign(this.$data, dataStack.pop()); // 恢複數據
}
}
由于 vue 的 mixin 中(zhōng)的代碼先于頁面執行,因此上述方法可(kě)優化到 mixin.js 文(wén)件中(zhōng)
let mixin = {
data() {
return {
dataStack: [], // 解決mpvue相同組件數據不更新問(wèn)題,建立棧堆
};
},
onUnload() {
Object.assign(this.$data, this.dataStack.pop()); // 恢複
},
onLoad() {
this.dataStack.push({ ...JSON.parse(JSON.stringify(this.$data)) }); // 備份
},
};
export default mixin;
bug得以解決: