vue3+pinia的使用,刷新后不丢数据

前言:

        好用的状态管理器,vue3中出来的pinia,相比较vuex来说,更加轻便,使用也更方便。

官方文档:点我

github地址:点我

pinia与vuex相比较优点:

  • pinia 是轻量级状态管理工具,大小只有1KB.
  • pinia 模块化设计,方便拆分。
  • pinia 没有 mutations,直接在 actions 中操作 state
  • pinia 支持多个 store。

使用步骤:

1、安装 npm/cnpm/pnpm/yarn  都可以,装上下面插件

pinia

2、main.js中配置

const pinia = createPinia();const app = createApp(App);
app.use(pinia);

3、创建stores 文件夹,

1)官方案例1:

新建一个counter.ts
import { defineStore } from 'pinia'export const useCounterStore = defineStore('counter', {state: () => {return { count: 0 }},// 也可以定义为// state: () => ({ count: 0 })actions: {increment() {this.count++},},
})
调用的vue
import { useCounterStore } from '@/stores/counter'export default {setup() {const counter = useCounterStore()counter.count++// 带自动补全 ✨counter.$patch({ count: counter.count + 1 })// 或使用 action 代替counter.increment()},
}

2)官方案例2:

定义ts
export const useStore = defineStore('main', {state: () => ({counter: 1,}),actions: {increment() {this.counter++}},getters: {// 类型是自动推断的,因为我们没有使用 `this`doubleCount: (state) => state.counter * 2,/*** 返回计数器值乘以二加一。** @returns {number}  返回类型必须明确设置*/doubleCountPlusOne(): number {// 自动完成 ✨return this.doubleCount + 1},},})
页面使用
<template><p>Double count is {{ store.doubleCount }}</p>
</template><script setup>const store = useStore()const a = store.counterstore.increment()
</script>

3)个人使用:

新建  useChatStore.ts
import {ref} from 'vue';
import {acceptHMRUpdate, defineStore} from 'pinia';export const useChatStore = defineStore('chat', () => {// 定义变量const conversations = ref([]);// 定义方法const getConversations = async (page = 1, search = '', type = '') => {//可以做任何操作};return {conversations ,getConversations };})if (import.meta.hot) {import.meta.hot.accept(acceptHMRUpdate(useChatStore, import.meta.hot));
}
页面调用:
template{{chatStore.conversations }}  //拿到数据了<script lang="ts" setup>import { useChatStore } from '/@/stores/useChatStore';const chatStore = useChatStore();//调用定义的方法chatStore.getConversations()

额外的插件:解决刷新数据丢失问题

pinia-plugin-persist

1、安装 npm/cnpm/pnpm/yarn  都可以,装上下面插件

pinia-plugin-persist

2、main.js中配置

import { createPinia} from 'pinia'
import piniaPluginPersist from 'pinia-plugin-persist' //++++
const store = createPinia()
store.use(piniaPluginPersist) //++++

3、相应的ts文件中

import {  defineStore  } from "pinia";
export const useStore= defineStore({state: () => ({active: '111',}),getters: {},// 开启数据缓存 若 需要state 中的变量页面刷新数据缓存 需要调用 actions 中的方法actions: {setActive( active ){this.active = active},},persist: {enabled: true, // 开启数据缓存 +++++++}
});

4、页面上

import { useActiveStore } from '/@/stores/useChatStore' // 引用 pinia 数据 
const store = useActiveStore() // 定义 store 接收
store.setActive(222)

到此结束!

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

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

相关文章

hadoop安全保护机制(kerberos + ldap)

信息安全理论&#xff1a; CIA模型&#xff1a;机密性、完整性和可用性 CIA模型能够帮助建议一些信息安全原则&#xff0c;但该模型并不是一个需要严格遵守的规则 hadoop平台可能设计多个CIA模型组件&#xff0c;也kennel一个也不涉及 机密性&#xff1a; 信息只应该被期望的…

探索AI图像安全,助力可信AI发展

探索AI图像安全&#xff0c;助力可信AI发展 0. 前言1. 人工智能发展与安全挑战1.1 人工智能及其发展1.2 人工智能安全挑战 2. WAIC 2023 多模态基础大模型的可信 AI2.1 WAIC 2023 专题论坛2.2 走进合合信息 3. AI 图像安全3.1 图像篡改检测3.2 生成式图像鉴别3.3 OCR 对抗攻击技…

Vis相关的期刊会议

中国计算机学会推荐国际学术会议和期刊目录 文档&#xff0c; 下载 link&#xff1a;CCF推荐国际学术刊物目录-中国计算机学会 一.可视化方向文章 1.IEEE VIS&#xff0c;是由 IEEE Visualization and Graphics Technical Committee(VGTC) 主办的数据可视化领域的顶级会议&a…

LeetCode_模拟_中等_874.模拟行走机器人

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 机器人在一个无限大小的 XY 网格平面上行走&#xff0c;从点 (0, 0) 处开始出发&#xff0c;面向北方。该机器人可以接收以下三种类型的命令 commands &#xff1a; -2 &#xff1a;向左转 90 度-1 &#xf…

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 17 日论文合集)

文章目录 一、检测相关(5篇)1.1 TALL: Thumbnail Layout for Deepfake Video Detection1.2 Cloud Detection in Multispectral Satellite Images Using Support Vector Machines With Quantum Kernels1.3 Multimodal Motion Conditioned Diffusion Model for Skeleton-based Vi…

【Linux】自动化构建工具-make/Makefile详解

前言 大家好吖&#xff0c;欢迎来到 YY 滴 Linux系列 &#xff0c;热烈欢迎&#xff01;本章主要内容面向接触过Linux的老铁&#xff0c;主要内容含 欢迎订阅 YY 滴Linux专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 订阅专栏阅读&#xff1a;YY的《…

深度学习——LSTM解决分类问题

RNN基本介绍 概述 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种深度学习模型&#xff0c;主要用于处理序列数据&#xff0c;如文本、语音、时间序列等具有时序关系的数据。 核心思想 RNN的关键思想是引入了循环结构&#xff0c;允许…

7.21一日总结

1.redux中action传参 a.传参 在时间中,第二个参数就是传递的值,num就是传递的参数 onClick{()>{store.dispatch({type:del,num:1})}} b.接收参数 const reducer function (state { ...data }, action) {switch (action.type) {case "del":console.log(action.n…

什么是剪贴板劫持-剪贴板劫持教程

目录 前言 什么是剪贴板劫持如何避免剪贴板劫持&#xff1f;如何执行剪贴板劫持&#xff1f; 总结 前言 我来写剪贴板劫持教程。 什么是剪贴板劫持 剪贴板劫持是一种危险的攻击技术&#xff0c;借助该攻击者可以控制受害者的剪贴板并将恶意代码粘贴到目标机器中&#xff0c;…

基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;液晶显示当前信息和状态&#xff1b;通过语音识别模块对当前垃圾种类进行语音识别&#xff1b; 通过蜂鸣器进行声光报警提醒垃圾桶已满&#xff1b;采用舵机控制垃圾桶打开关闭&#xff1b;超声波检测当前垃圾桶满溢程度&#xff1…

认识spring项目的创建 和 从spring中进行Bean对象的存取

前言 本篇简单介绍如何创建spring项目&#xff0c;如何存储到spring容器中&#xff0c;如何从容器中获取Bean对象&#xff0c;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. 创建spring项目2. 将Bean对象存…

RS485/RS232自由转ETHERNET/IP网关rs485和232接口一样吗

你是否曾经遇到过这样的问题&#xff1a;如何将ETHERNET/IP网络和RS485/RS232总线连接起来呢&#xff1f; 远创智控的YC-EIP-RS485/232通讯网关&#xff0c;自主研发的ETHERNET/IP从站功能&#xff0c;完美解决了这个难题。这款网关不仅可以将ETHERNET/IP网络和RS485/RS232总线…

服务器数据恢复-ESX SERVER无法连接到STORAGE的数据恢复案例

服务器数据恢复环境&#xff1a; 某公司信息管理平台&#xff0c;数台VMware ESX SERVER虚拟机共享一台IBM某型号存储。 服务器故障&#xff1a; VC报告虚拟磁盘丢失&#xff0c;管理员ssh到ESX中执行fdisk -l命令查看磁盘&#xff0c;发现STORAGE已经没有分区表了。重启设备后…

WAIC2023:图像内容安全黑科技助力可信AI发展

目录 0 写在前面1 AI图像篡改检测2 生成式图像鉴别2.1 主干特征提取通道2.2 注意力模块2.3 纹理增强模块 3 OCR对抗攻击4 助力可信AI向善发展总结 0 写在前面 2023世界人工智能大会(WAIC)已圆满结束&#xff0c;恰逢全球大模型和生成式人工智能蓬勃兴起之时&#xff0c;今年参…

C++第五讲

思维导图 续&#xff1a;myString类完善 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/19 19:20.--------------------------------- */ #include<iostream> #include<cstring>using namespace std;class myString { priva…

社区发现相关算法

目录 **社区检测与聚类****社区检测技术**1. Louvain 社区检测[2]2. Surprise社区检测[3]3. 莱顿社区检测[4]4. Walktrap 社区检测[5] 结论5.LPA 标签传播6.K-L算法7.GN算法8.Newman快速算法 SlashBurn: Graph Compression and Mining beyond Caveman CommunitiesReferences 摘…

WebSocket笔记

1. websocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#xff1a; HTTP是短连接W…

【微信小程序】分别对确认和取消按钮设置不同的样式,添加自定义的样式类

给确认和取消按钮设置不同的微信小程序样式&#xff0c;你可以使用<button>标签的class属性来添加自定义的样式类&#xff0c;并在对应的样式类中定义不同的样式。 以下是一个示例代码&#xff0c;演示如何给确认按钮和取消按钮设置不同的样式&#xff1a; <button …

【EXCEL】通过url获取网页表格数据

目录 0.环境 1.背景 2.具体操作 0.环境 windows excel2021 1.背景 之前我用python的flask框架的爬虫爬取过豆瓣网的电影信息&#xff0c;没想到excel可以直接通过url去获取网页表格内的信息&#xff0c;比如下图这是电影信息界面 即将上映电影 (douban.com) 通过excel操作&…

GO学习之切片操作

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 文章目录 GO系列前言一、什么是切片&#xff08;和数组有什么关系&#xff09;二、切片基本操作2.1 切片定义2.2 添加元素2.3 删除元素2.4 遍历2.5 自定…