Nuxtjs中使用store管理数据,并实现持久化存储

Nuxtjs中使用store管理数据,并实现持久化存储

实现步骤:

一:存储数据在store中:在store文件夹新建userstore.js,并添加以下代码在这里插入图片描述

userstore.js中的代码:

export const state = () => ({
        // 这里是全局数据保存的地方
        userInfo: {}
    })
    // 修改state里面的函数必须用到mutations里面的函数
export const mutations = {
    setUserInfo(state, data) {
        // 每个 mutation 函数都可以接受到两个参数
        // 第一个是 state 对象本身
        // 第二是调用函数时额外添加的数据
        // 这里需要做的就是改变 state 数据
        // 这样外面调用这个函数, 并且传入数据, 即可改变当前的 userInfo 属性
        state.userInfo = data
    },

使用:以一个简单的登录功能为例

在这里插入图片描述

说明:登录成功之后通过this.$store.commit(‘userstore/setUserInfo’,res.data)就将数据存储到了store中

注意:此时的数据只是暂时存储到了store中并没有持久化也就是永久存储,页面刷新后就不见了,下一步我们需要将数据持久化存储

二:保存store到本地

现在用户已经保存到store了,但是还有一个问题,数据是保存在缓存中的,如果页面一刷新,那么数据就会不见了,这样是不合理的。

所以我们需要使用localStorage把数据保存到本地,但是由于nuxtjs是运行在服务器的,不能直接在store中使用浏览器的方法,所以我们需要依赖一些判断和插件。

思路:将用户信息保存到本地中以实现永久存储

1、安装插件:npm install --save vuex-persistedstate

插件地址入口
2、在plugins中新建localStorage.js,并添加以下代码:

import createPersistedState from 'vuex-persistedstate'

export default ({ store }) => {
    window.onNuxtReady(() => {
        createPersistedState({
            key: "store", // 读取本地存储的数据到store
        })(store)
    })
}

3、导入插件

修改nuxt.config.js配置文件,在plugins配置项中新增一条数据
在这里插入图片描述

plugins: [
    // 其他代码...
    { src: '@/plugins/localStorage', ssr: false }
],

修改完毕之后重启项目就可以实现利用store持久化存储信息了

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用 Vuex 状态管理库时,为了实现数据持久化,可以采用以下两种方式: 1. 使用浏览器的本地存储(localStorage 或 sessionStorage) 在 Vuex 使用插件 vuex-persistedstate,它可以将 Vuex 的状态持久化到浏览器的本地存储,这样在刷新页面或关闭浏览器后,数据仍然可以被恢复。使用方法如下: ``` // 安装插件 npm install vuex-persistedstate --save // 在 store.js 引入插件 import createPersistedState from 'vuex-persistedstate' // 在创建 store 实例时使用插件 const store = new Vuex.Store({ // ... plugins: [createPersistedState()] }) ``` 2. 使用服务器存储(如 cookie、session、数据库等) 如果需要实现多终端同步数据,或者需要保存敏感数据,可以使用服务器存储方式。例如,可以将数据保存到 cookie、session 或数据。在 Vuex 使用插件 vuex-persist,在每次提交 mutation 时将数据保存到服务器。使用方法如下: ``` // 安装插件 npm install vuex-persist --save // 在 store.js 引入插件 import VuexPersist from 'vuex-persist' const vuexPersist = new VuexPersist({ key: 'my-app', storage: localStorage // or window.sessionStorage or any other storage instance }) // 在创建 store 实例时使用插件 const store = new Vuex.Store({ // ... plugins: [vuexPersist.plugin] }) ``` 以上两种方式都可以实现 Vuex 数据持久化,具体选择哪种方式取决于具体的业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值