解決 mpvue 經典 bug:同路(lù)由切換時,上次的數據會保留 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

解決 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得以解決:

相關(guān)案例查看更多