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,};
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/846406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode5 最长回文子串

给你一个字符串 s,找到 s 中最长的 回文 子串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2: 输入:s "cbbd" 输…

【Java】一文看懂Thread 线程池的 7 种创建方式、任务队列及自定义线程池(代码示例)

本文摘要:【Java】Thread 线程池的 7 种创建方式及自定义线程池(代码示例版) 😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专…

编写一款2D CAD/CAM软件(十九)点选图形

点选图元原理 设定鼠标敏感范围,比如选中鼠标点击位置5个像素内距离最近的图元;当鼠标点击时,求解点击位置在几何坐标系下坐标点与附近几何图元的距离;如果到图元距离小于设定的鼠标敏感范围,则视为图形可选中;进一步,如果多个图元满足被选中的条件,则只选中距离最近的…

彩灯控制器设计 74ls160+ne555实现

一、选题背景 数字电子技术在我们生活中的应用非常之广泛,不论是在各个方面都会涉及到它,小到家用电器的自动控制,大到神舟九号和天空一号航天器的设计,都无可避免的要运用它。并且鉴于以理论推动实践及理论实践相结合为指导思想,特此用我们所学的理论知识来实践这次课程设…

低空经济国外经验及发展重点

国外先进经验 1.精准分类管理 美国将空域划分五大类,主要包括A类(高空管制空域)、B类(繁忙终端管制空域)、C类(一般终端管制空域)、D类(机场管制空域)和E类&#xff08…

UVa12273/LA4958 Palindromic DNA

UVa12273/LA4958 Palindromic DNA 题目链接题意分析AC 代码 题目链接 本题是2010年icpc欧洲区域赛西南欧赛区的的E题 题意 DNA由四种核苷碱基A、G、T、C组成,它们形成环状排序。当今能对DNA进行修改(但不能同时对相邻位置进行修改)&#xff…

【云原生】Docker Compose 使用详解

目录 一、前言 二、Docker Compose 介绍 2.1 Docker Compose概述 2.2 Docker Compose特点 2.3 Docker Compose使用场景 三、Docker Compose 搭建 3.1 安装docker环境 3.2 Docker Compose安装方式一 3.2.1 下载最新版/如果不是最新可替换最新版本 3.2.2 设置权限 3.2.…

Q-Learning 简介:初学者教程(1)

一、说明 强化学习强调无模型学习算法,因此出现Q-Learning,Q-Learning算法酷似“有限状态自动机”模型,只是增加了奖励机制和Agent机制,而Agent与粒子群算法、蒙特卡洛算法是有关的。本文介绍这个算法框架。 , 二、QL框…

项目管理之maven svn

管理jar包之间依赖关系 编译、打包、清理、测试等一系列构建工具 一、Maven的标志 1、每一个maven工程都有一个pom.xml maven项目坐标 <groupId>com.aaa</groupId>//项目路径 <artifactId>web</artifactId>项目名称 <version>0.0.1-SNAPS…

C语言—深入理解指针(5)

1. sizeof 和 strlen 的对比 1.1 sizeof 在学习操作符的时候&#xff0c;我们学习了 sizeof&#xff0c;sizeof 是计算变量所占内存空间大小的&#xff0c;单位是字节&#xff0c;如果操作数是类型的话&#xff0c;计算的是使用类型创建的变量所占内存空间的大小。 sizeof 只…

西瓜播放器xgplayer设置自动播放踩坑

上图是官网&#xff08;西瓜视频播放器官方中文文档&#xff09;的介绍&#xff0c;相信大家都是按照官网配置去做的&#xff0c;但是并没有什么用&#xff0c;插件很好用&#xff0c;但是属性不全&#xff0c;真的很悔恨&#xff0c;找遍 api 都没有找到自动播放的属性&#x…

基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统

基于BERT+LSTM+CRF深度学习识别模型的医疗知识图谱问答可视化系统是一个综合性的系统,它结合了深度学习技术和知识图谱技术,为医疗领域提供了高效、准确的信息查询和问答服务。以下是该系统的详细介绍: 一、系统概述 该系统通过构建医疗领域的知识图谱,结合BERT+LSTM+CRF…

MongoDB-4.2.1 之安装和使用

安装 下载安装包 我自己电脑是 Windows7 的老古董&#xff0c;所以就下载老版本的 MongoDB。 mongodb: https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.1.zip 解压安装包到指定路径 我解压到的 C 盘 C:\mongodb-4.2.1 添加环境变量 创建数据库和…

python数据分析numpy基础之in1d检查数组元素是否在另一数组中

1 python数据分析numpy基础之in1d检查数组元素是否在另一数组中 python的numpy库的in1d(x,y)函数&#xff0c;检查数组x的元素是否在另一数组y中&#xff0c;并返回一个长度与x相等的布尔数组。 用法 numpy.in1d(ar1, ar2, assume_uniqueFalse, invertFalse, *, kindNone)描…

【免费Web系列】JavaWeb实战项目案例六

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r 员工信息-删除&修改 前面我们已经实现了员工信息的条件分页查询以及新增操作。 关于员工管理的功能&#xff0c;还有两个需要实现&#xff1a; 删除员工 修改员工 除了员工管理的功能之外&#x…

【四大组件】-- 广播接收器 BroadcastReceiver

目录 广播接收器 BroadcastReceiver实现原理使用流程广播的类型(1) 普通广播(2) 系统广播(3) 有序广播(4) App应用内广播 Local Broadcast粘性广播 面试问题 广播接收器 BroadcastReceiver 实现原理 Android 中的广播使用了设计模式中的观察者模式&#xff1a; 基于消息的发布…

【数据结构与算法 | 力扣篇】力扣每日一题2965, 2928

1. 力扣2965 : 找出缺失和重复的数字 (1). 题 给你一个下标从 0 开始的二维整数矩阵 grid&#xff0c;大小为 n * n &#xff0c;其中的值在 [1, n2] 范围内。除了 a 出现 两次&#xff0c;b 缺失 之外&#xff0c;每个整数都 恰好出现一次 。 任务是找出重复的数字a 和缺失…

基于springboot+vue的家乡特色推荐系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【数据结构与算法】后续遍历的非递归实现

/** /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null : right)* }*/ /*** param {TreeNode} root* re…

【Linux】Linux工具——gcc/g++

1.使用vim更改信用名单——sudo 我们这里来补充sudo的相关知识——添加信任白名单用户 使用sudo就必须将使用sudo的那个账号添加到信用名单里&#xff0c;而且啊&#xff0c;只有超级管理员才可以添加 信用名单在/etc/sudoers里 我们发现它的权限只是可读啊&#xff0c;所以…