uniapp中Vuex数据持久化

问题

H5应用中存在Vuex中的数据在刷新页面后丢失了。

原因

Vuex的 store 中的数据是保存在运行内存中的,当页面刷新时,页面会重新加载 Vue 实例,Vuex数据会重新初始化,导致页面刷新Vuex中的数据丢失的问题。

解决方法

使用 vuex-persistedstate 插件

1、在项目目录下执行:npm install --save vuex-persistedstate;
2、修改store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
import persistedState from "vuex-persistedstate"

Vue.use(Vuex)

const store = new Vuex.Store({
	plugins: [
		persistedState({
			storage: {
				getItem: key => uni.getStorageSync(key),
				setItem: (key, value) => uni.setStorageSync(key, value),
				removeItem: key => uni.removeStorageSync(key)
			}
		})
	],
	state:{//存放状态
        "username":'',
        "userid":''
    },
	mutations:{
		//...
	},
	actions:{
		//...
	},
	//...
})

export default store

使用后浏览器打开用控制台调试可看数据存放在 window.localStorage.vuex
这里其实就和调用uniapp提供的数据缓存API存放的数据位置一样了,官方文档链接:https://uniapp.dcloud.io/api/storage/storage.html

注意:在APP-PLUS环境下,这个数据在应用退出时默认不会被清空(或者说初始化)。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uniapp 是一个跨平台的开发框架,可以使用 Vue.js 来开发多端应用。对于 Vue 3 的 store,Uniapp 也提供了相应的支持。 在 Uniapp ,可以使用 Vuex 来管理应用的状态。在 Vue 3 Vuex 也有相应的更新来适配 Composition API。你可以按照以下步骤来创建和使用 Vuex store。 1. 首先,在项目的根目录下,创建一个 `store` 目录,用来存放 Vuex 的相关文件。 2. 在 `store` 目录内,创建一个 `index.js` 文件,用来初始化 Vuex 的 store。 3. 在 `index.js` ,引入 Vue 和 Vuex: ```javascript import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) // 创建一个 store 实例 const store = new Vuex.Store({ state: { // 在这里定义你的状态 }, mutations: { // 在这里定义你的变更方法 }, actions: { // 在这里定义你的异步操作方法 }, getters: { // 在这里定义你的计算属性 } }) export default store ``` 4. 在你的应用主文件(一般是 `main.js` 或者 `App.vue`),引入并使用该 store: ```javascript import store from './store' new Vue({ store, render: h => h(App) }).$mount('#app') ``` 现在,你就可以在应用的任何组件使用该 store 来管理应用的状态了。你可以通过 `this.$store` 来访问 store 的属性和方法,例如: ```javascript // 读取状态 const count = this.$store.state.count // 提交变更 this.$store.commit('increment', payload) // 分发异步操作 this.$store.dispatch('fetchData') ``` 以上就是在 Uniapp 使用 Vue 3 的 store(基于 Vuex)的基本步骤。你可以根据自己的需求,在 store 定义状态、变更方法、异步操作方法和计算属性,来管理应用的数据和逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值