当前位置: 首页 > news >正文

uniapp使用数据持久化存储

什么是持久化存储

持久化存储是指将数据存储在非易失性介质中,以保证数据在系统重启或断电后仍能保持不变。这种存储方式确保数据持久存储并且可靠地被读取和访问,

简答来说:就是防止丢失,长期存储

为什么要用持久化存储

Pinia是和Vue3搭配的状态管理库,相对应的Vue2一般搭配Vuex。由于Pinia和Vuex中的state数据都是存储在内存中的,一刷新页面,state数据就会丢失,所以需要将数据持久化才能保证数据不丢失。例如存储到本地存储、Cookie等

安装

本项目使用的pinia做持久化存储

需要安装pinia和pinia的持久化

npm install pinia 

yarn yarn add pinia

# npm npm install pinia-plugin-persist

# yarn yarn add pinia-plugin-persist

# pnpm pnpm add pinia-plugin-persist

配置pinia和持久化插件

  • 创建pinia实例,并导出(store/index.js)
  • 使用持久化插件
import { createPinia } from 'pinia'// pinia持久化插件
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'// 创建pinia实例
const pinia = createPinia()
// 使用持久化插件
pinia.use(piniaPluginPersistedstate)// export * from,将所有按需导出的默认,再次全部按需导出
// 用户信息
export * from "./modules/user"export default pinia

 使用

defineStore函数的第三个参数中,重写持久化插件的存取方法,转调给UniApp提供的本地存储方法(默认使用的是localStorage,微信小程序中不支持,所以需要重写存取方法,调用UniApp的存取方法,来达到跨端)

import {defineStore,
} from 'pinia';
import {ref,
} from 'vue';// 创建聊天室仓库
const chatRoomStore = defineStore('chatroom',() => {// 定义聊天室const chatRoom = ref();// 储存聊天室// 保存会员信息,登录时使用const setchatRoom = (val) => {chatRoom.value = val;};// 清理会员信息,退出时使用const clearchatRoom = () => {chatRoom.value = undefined;};return {chatRoom,setchatRoom,clearchatRoom,};},// 重要:模块必须开启持久化,才会持久化!!!// 注意:默认持久化,只在H5端有效,因为默认使用的是localStorage,小程序端不能使用这个API,所以需要重写存取方法,转调给UniApp的持久化方法// 网页端配置// persist: true,// 小程序端配置{persist: {storage: {getItem(key) {return uni.getStorageSync(key);},setItem(key, value) {uni.setStorageSync(key, value);},},},}
);// 暴露用户小仓库
export default chatRoomStore;

配置pinia到vue实例中(main.js)

import {createSSRApp
} from "vue";import App from "./App.vue";// 导入pinia
import pinia from "@/store";export function createApp() {const app = createSSRApp(App);// 使用pinaapp.use(pinia)return {app,};
}

相关文章:

  • 【JavaEE进阶】——Mybatis操作数据库(使用注解和XML方式)
  • docker部署Minio对象存储及使用
  • mongodb 编码格式 Detected BSON
  • Golang中的 defer 关键字和Python中的上下文管理with关键字
  • 数据治理-数据标准演示
  • 5岁幼儿编程:开启未来的神秘之门
  • 数据库(15)——DQL分页查询
  • npm install 出错,按照版本不匹配解决
  • springboot针对返回的response拦截处理越权问题
  • 本地电脑通过远程服务器进行ssh远程转发
  • 高考后的赚钱新路径:千行赏金助你开启财富之旅
  • MySQL之创建高性能的索引(四)
  • 超大功率光伏并网逆变器学习(三相)
  • CentOS8安装opensips-cli
  • Nginx:怎么携带参数重定向
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • CSS居中完全指南——构建CSS居中决策树
  • docker-consul
  • Java Agent 学习笔记
  • k8s 面向应用开发者的基础命令
  • MySQL数据库运维之数据恢复
  • mysql外键的使用
  • nodejs实现webservice问题总结
  • rc-form之最单纯情况
  • Redis学习笔记 - pipline(流水线、管道)
  • SpiderData 2019年2月23日 DApp数据排行榜
  • TCP拥塞控制
  • WebSocket使用
  • Zepto.js源码学习之二
  • 阿里研究院入选中国企业智库系统影响力榜
  • 数据科学 第 3 章 11 字符串处理
  • 延迟脚本的方式
  • 转载:[译] 内容加速黑科技趣谈
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 如何用纯 CSS 创作一个货车 loader
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #162 (Div. 2)
  • #传输# #传输数据判断#
  • $jQuery 重写Alert样式方法
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C++)八皇后问题
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Matlab)使用竞争神经网络实现数据聚类
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (笔记)M1使用hombrew安装qemu
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (六)Flink 窗口计算
  • (四) Graphivz 颜色选择