小程序的持久化存储

目录

 小程序的持久化存储

JSON的格式转化

 


 小程序的持久化存储

1.在vuex中声明一个叫做 saveToStorage 的 mutations 方法,依靠setStorageSync方法

saveToStorage(state) {
   uni.setStorageSync('xxx', JSON.stringify(state.xxx))
}

2.在合适的位置, 通过 commit 方法,调用 saveToStorage 方法

   this.commit('saveToStorage')

3.修改vuex中的state函数,读取本地存储的数据,依靠uni.getStorageSync,并对state中的数据进行初始化


state: () => ({
   cart: JSON.parse(uni.getStorageSync('xxx') || '依情况而定,可能是对象也可能是数组或者字符串')
}),


JSON的格式转化

本地存储只能存储字符类型的数据,可以在存储时将其转化为JSON字符串类型,取出来的时候再将其转化回来

JSON.parse()        //将JSON格式的字符串转化为对象类型

JSON.stringify()        //将JSON格式的数据(对象类型)转化为JSON格式的字符串

举个例子:——现在要向本地存储一个对象obj

  var obj={
            name:'李白',
            age:18
        }
        // 持久化存储
        // let objpro=JSON.stringify(obj)
        localStorage.setItem('objpro',obj)
        // console.log(objpro)

如果不使用JSON.stringify() ,那么在本地显示的是

 如果是这样的话,我们之后就算取,也是取不出来里面的数据的,所以要使用JSON.stringify()

 

 那将本地中的数据取出来的,也是JSON数据,我们需要的不是json数据,同理使用JSON.parse()   将其转化成原来正常的数据类型就可以了。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pinia是一个基于Vue的状态管理库,它本身不提供持久化功能,但可以与其他库或插件一起使用来实现持久化。 以下是一些实现Pinia持久化的方法: 1. 使用浏览器的localStorage或sessionStorage。通过在getter和setter中使用window.localStorage或window.sessionStorage存储和获取数据。 ``` import { defineStore } from 'pinia' export const useCounterStore = defineStore({ id: 'counter', state: () => ({ count: parseInt(localStorage.getItem('count') || '0') }), getters: { getCount() { return this.count } }, actions: { increment() { this.count++ localStorage.setItem('count', this.count.toString()) } } }) ``` 2. 使用第三方插件,例如vuex-persistedstate。此插件可以将Vuex状态持久化到localStorage或cookie中。由于Pinia与Vue的接口相似,因此可以使用此插件进行持久化。 ``` import { createPinia } from 'pinia' import createPersistedState from 'vuex-persistedstate' const pinia = createPinia() pinia.use(createPersistedState({ storage: window.localStorage })) ``` 3. 使用indexedDB或其他浏览器数据库。可以使用IndexedDB API将Pinia状态持久化到浏览器数据库中,以便在下次加载时恢复状态。 ``` import { defineStore } from 'pinia' export const useCounterStore = defineStore({ id: 'counter', state: () => ({ count: 0 }), getters: { getCount() { return this.count } }, actions: { async increment() { this.count++ const db = await openDatabase() const tx = db.transaction('counter', 'readwrite') tx.objectStore('counter').put(this.count, 'count') } } }) function openDatabase() { return new Promise((resolve, reject) => { const request = window.indexedDB.open('myDatabase', 1) request.onerror = () => { reject(new Error('Failed to open database')) } request.onsuccess = () => { const db = request.result resolve(db) } request.onupgradeneeded = (event) => { const db = event.target.result db.createObjectStore('counter') } }) } ``` 这些方法都可以用来实现Pinia的持久化。具体选择哪种方法取决于你的需求和应用程序的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值