uniapp 使用state 持久化存【已解决】

state状态管理,刷新页面后他是会重置的,并不能做到持久化保存数据

这个时候我们有两种方法

1,利用H5的本地存储(localStorage,sessionStorage);(不推荐,用了这个state好像又没什么用了)

2,利用第三方封装好的插件,例如vuex-persistedstate

vuex-persistedstate是一个Vuex插件,可以将Vuex store的状态持久化存储到浏览器的localStorage或sessionStorage中,使得用户下次打开页面时能够继续使用之前的应用状态。这样可以避免用户在刷新页面或关闭浏览器后所有状态都丢失的情况。

首先我们要引入插件:https://pan.baidu.com/s/14NPn4dmC5FbRzP86dOATwQ

提取码:7ty9

首先这是没有持久化的

这个时候我的state是没有用户信息的userinfo没有数据,注意这里不加插件也是可以拿到你的初始设置的数据的,但是至少不能变更,不能保留实现持久化的

加入插件后实现持久化

这里我已经拿到用户数据了,刷新也是会保留的,实现了持久化,下面是代码部分

1,首先新建一个状态管理store目录,放入插件js,新建index.js

2,indexjs

import Vuex from "vuex";
import Vue from "vue";
Vue.use(Vuex);
import createPersistedState from "vuex-persistedstate";

export default new Vuex.Store({
    state:{
        num:1,
        userinfo:{}
    },
    getters:{
        
    },
    mutations:{
        set_userinfo(state,data){
            state.userinfo=data
        }
    },
    actions:{},
    modules:{},
    
    plugins: [
      createPersistedState({
        // 存储方式
          storage:window.localStorage,
          key:'userinfo',
          reducer(state) {
              return {...state}
          }
        
      }),
    ],
})


3,引入store

4,使用commit调用方法,存入数据

this.$store.commit('set_userinfo',res.data)

这里的set_userinfo是我们index.js里面自己写的,方法名随意

然后去页面打印刷新看数据是否持久化

ok,是不是很简单,有问题滴滴我,一起加油!!!!!

uni-app使用 Pinia 和 Vuex 进行状态管理并实现数据持久化的步骤如下: 1. **安装依赖**:首先需要在项目中安装 Vue.js 的官方状态管理模式 Vuex 和 Pinia。你可以通过 `npm` 或者 `yarn` 来安装: ``` npm install vue@next pinia vuex-persistedstate ``` 2. **创建 Pinia store**:在 `src/store` 目录下创建一个名为 `store.ts` 的文件,导入 Pinia 并配置你的 state、getters、actions 和 mutations: ```ts import { createStore } from '@vue/pinia' import { persistStore, autoPersist } from 'vuex-persistedstate' export const store = createStore({ id: 'your-store-name', state() {}, getters: {}, actions: {}, mutations: {} }) ``` 3. **设置存储插件**:为了实现数据持久化,我们需要启用 vuex-persistedstate 插件,并将其连接到 Pinia store 上。在 main.ts 或 main.js 中: ```js import { createApp } from 'vue' import App from './App.vue' import store from './store' import persistedState from 'vuex-persistedstate' persistedState(store) // 如果你想自动保状态,在 store 初始化时添加以下代码 // 注意这会立即保当前的状态 autoPersist({ key: 'pinia-storage', // 自定义存储键名 storage: window.localStorage, }) const app = createApp(App) app.use(store) // ...其他组件注册等 app.mount('#app') ``` 4. **处理数据同步**:在需要将数据从 store 保到本地(如用户离开页面前)和从本地恢复到 store(如重新加载应用时)的地方,可以调用相应的 getter 获取数据然后手动触发 mutation 进行操作。 5.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐卿゚

帅哥美女多多支持哦,希望能帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值