Skip to content

页面刷新store数据丢失

Vuex页面刷新状态丢失

问题产生

在登录后,由于大部分接口都需要获取到区域名,所以将区域名保存在vuex中,但是在页面刷新后,区域名的值变为underfined。

原因

在页面刷新时,vue 实例重新加载,store 被重置;store 是存储组件状态的,不是用来存储本地数据库的。

所以要用本地存储方式(1.cookie;2.localStorage;3.sessionStorage;根据其存储的原理,这里使用第三种方式)来进行本地存储。

解决方法

在 Vue 应用中,Vuex 可以解决页面刷新后数据丢失的问题。Vuex 允许我们将应用的状态存储在一个集中的地方,这个状态可以在应用的各个组件中共享和使用。当页面刷新时,我们可以使用 Vuex 的插件来将应用的状态持久化到本地存储中,这样数据就可以在页面刷新后得到保存。

Vuex 提供了一个叫做 Vuex Persistedstate 的插件,可以将应用的状态持久化到本地存储中。使用 Vuex Persistedstate 插件非常简单,只需要在创建 Vuex store 时将其作为插件传入即可。下面是一个使用 Vuex Persistedstate 插件的示例:

js
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'

const store = new Vuex.Store({
  // 状态
  state: {
    count: 0
  },
  // 修改状态的方法
  mutations: {
    increment(state) {
      state.count++
    }
  },
  // 插件
  plugins: [createPersistedState()]
})

在上面的示例中,我们使用了 vuex-persistedstate 包中的 createPersistedState 方法来创建一个 Vuex 插件,并将其传入 Vuex store 的 plugins 选项中。这样,当我们修改应用的状态时,插件会自动将状态持久化到本地存储中。在页面刷新后,我们可以使用 createPersistedState 方法来恢复应用的状态。

注意

好用虽好用,但不能滥用。

Released under the MIT License.