/** ** @/store/index.js ****/
import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate' // 【主要代码】

Vue.use(Vuex)

// https://webpack.js.org/guides/dependency-management/#requirecontext
const modulesFiles = require.context('./modules', true, /\.js$/)

// you do not need `import app from './modules/app'`
// it will auto require all vuex module from modules file
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
    // set './app.js' => 'app'
    const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
    const value = modulesFiles(modulePath)
    modules[moduleName] = value.default
    return modules
}, {})
const store = new Vuex.Store({
    modules,
    plugins: [createPersistedState()] // 【主要代码】
})

export default store

在这里插入图片描述

存在的问题

由于 localStorage 最多可以存储 5MB 数据,如果 store 中的数据过多,会导致报错。(可使用 reducer 过滤不需要存的 https://blog.csdn.net/qq_43340606/article/details/126020339在这里插入图片描述

import createPersistedState from 'vuex-persistedstate'; 
const store = new Vuex.Store({
  // ...
  plugins: [createPersistedState({
    reducer(val) {
      return {
        // 只存储需要的状态,这里的key为需要存储的状态名
        userInfo: val.userInfo,
        // 其他不需要存储的状态可以不包含
      };
    }
  })]
});
GitHub 加速计划 / vu / vue
82
16
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:4 个月前 )
9e887079 [skip ci] 2 个月前
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐