vuex中状态管理刷新页面时数据被清空的问题

前言

  在vue项目中,当我们的应用遇到多个组件之间的共享问题时,通常会用到Vuex(一个状态管理的插件,可以解决不同组件之间的数据共享和数据持久化),解决组件之间同一状态的共享问题。但是在刷新页面后,vuex会重新更新state,所以,存储的数据会丢失。

解决办法

使用vuex-persistedstate 插件

1.安装插件:npm install vuex-persistedstate --save
2.在store的index.js中,手动引入插件并配置

import createPersistedState from "vuex-persistedstate"
export default new Vuex.Store({
  state,
  getters,
  mutations,
  actions,
  // 如果此刻想配置多个选项,将plugins写成一个一维数组,不然会报错
  plugins: debug ? [createLogger(), createPersistedState()] : [createPersistedState()]
})

这样的话会在Application里面看到一个vuex的存储,但是该插件默认持久化所有state,我们也可以指定需要持久化的state:

import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
 // ...
 plugins: [createPersistedState({
  storage: window.sessionStorage,
  reducer(data) {
   return {
   // 设置只储存state中的boxId
   boxId: data.boxId
  }
  }
 })]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装 npm npm install vuex --save 在一个模块化的打包系统中,您必须显式地通过Vue.u...
    萧玄辞阅读 2,972评论 0 7
  • 目录 - 1.什么是vuex? - 2.为什么要使用Vuex? - 3.vuex的核心概念?||如何在组件中去使用...
    我跟你蒋阅读 4,132评论 4 51
  • vuex可以进行全局的状态管理,但刷新后刷新后数据会消失,这是我们不愿意看到的。怎么解决呢,我们可以结合本地存储做...
    无脚鸟30阅读 5,536评论 1 31
  • 1.什么是状态: 可以理解为在data中的属性需要分享给其他vue组件使用的部分,就叫做状态。简单的说就是data...
    JLong阅读 1,150评论 0 0
  • vuex vue 专用 状态管理模式 采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的...
    前端菜菜1号阅读 396评论 0 0