uni-app 真机调试APP时 Hbuilder X热更新代码到手机 Vuex变量被重置

uni-app 真机调试APP时 Hbuilder X热更新代码到手机 Vuex变量被重置

2 回复

刚试了一下 h5端也出现了这种情况

更多关于uni-app 真机调试APP时 Hbuilder X热更新代码到手机 Vuex变量被重置的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在真机调试时,HBuilder X 的热更新机制会重新加载页面,导致 Vuex 状态被重置。这是因为热更新只替换了修改的模块,但 Vuex 的状态是存储在内存中的,重新加载页面时内存状态会丢失。

解决方案:

  1. 使用持久化存储:结合 uni.setStorageSync 在 Vuex 的 mutation 中同步保存状态,并在应用启动时恢复状态。
  2. 避免依赖内存状态:对于需要持久化的数据,直接使用 uni.setStorageSync 存储,而不是依赖 Vuex。
  3. 监听热更新事件:在 App.vueonShow 中监听热更新,并在更新后手动恢复 Vuex 状态。

示例代码(Vuex 持久化):

// store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    userInfo: uni.getStorageSync('userInfo') || {}
  },
  mutations: {
    setUserInfo(state, payload) {
      state.userInfo = payload
      uni.setStorageSync('userInfo', payload)
    }
  }
})
回到顶部