vue3.0学习笔记(五)——Vue3 状态管理 - Pinia

news2024/11/27 2:23:13

1. 什么是Pinia

  • Pinia是Vue的最新状态管理工具,是Vuex的替代品。
  • pinia官网:Pinia | The intuitive store for Vue.js
  • 提供更加简单的API(去掉了mutation)
  • 提供符合,组合式风格的API(和Vue3新语法统一)
  • 去掉了modules的概念,每一个store都是一个独立的模块
  • 配合TypeScript更加友好,提供可靠的类型推断

2. 手动添加Pinia到Vue项目

在实际开发项目的时候,关于Pinia的配置,可以在项目创建时自动添加
现在我们初次学习,从零开始:
  • 使用Vite创建一个空的Vue3项目
    • npm init vite@latest
  • 按照官方文档安装 pinia 到项目中
    • yarn add pinia
      # 或者使用 npm
      npm install pinia

3. Pinia基础使用-计数器案例

3.1 vue2.0 状态管理工具 vuex 使用回顾

  • 口诀:下载,引入,注册,对象,注入(挂载)
  • 详细使用细节:vue学习笔记(十)——Vuex(状态管理,组件间共享数据)

3.1 vue3.0 状态管理工具 pinia 使用

① 定义store

  • 口诀:下载,引入,实例,对象,使用(注册/注入)

  • const 仓库对象 = defineStore(仓库名字(唯一标识), () => { state, mutations, actions, getters })

  • 仓库对象 useCounterStore 命名规范,use开头-仓库名-Store结尾

  • 第一个参数为仓库名字,要求是一个独一无二的名字(唯一标识)

  • 第二个参数为函数,该函数定义了一些响应式属性和方法,并且返回(return)一个带有我们想暴露出去的属性和方法的对象。

  • state 数据直接申明使用

  • 申明 mutations 和 actions,使用普通函数形式申明, mutations 和 actions合二为一

  • 申明 getters,基于数据的派生计算属性 computed

②  组件使用store

4. getters实现

Pinia中的 getters 直接使用 computed函数 进行模拟, 组件中需要使用 需要把 getters return出去

5. action异步实现

编写方式:异步action函数的写法和 组件中获取异步数据的写法完全一致
接口地址:http://geek.itheima.net/v1_0/channels
需求:在Pinia中获取频道列表数据并把数据渲染App组件的模板中

6. storeToRefs工具函数

使用storeToRefs函数可以辅助保持数据 (state + getter) 的响应式解构

原因: counterStore 以及所有的 store 都是一个用 reactive 包装的对象

要想不丢失响应式,使用 StoretoRef 函数

7. Pinia的调试

Vue官方的 dev-tools 调试工具 对 Pinia直接支持,可以直接进行调试。
vue 官方调试工具版本更新和安装问题: vue3.0学习笔记(一)——vue3简介与vite脚手架的使用

8. Pinia持久化插件

8.1 使用步骤

  • 数据持久化?
    • 黑马头条vue2.0项目实战(五)——首页—频道编辑,频道数据持久化功能实现。
  • 官方文档:快速开始 | pinia-plugin-persistedstate

使用步骤:

  • 安装插件 pinia-plugin-persistedstate
    • npm i pinia-plugin-persistedstate
  • main.js 使用
  • store仓库中,persist: true 开启

8.2 常用配置说明 - 更多配置参考官方文档

该插件的默认配置如下:

  • 使用 localStorage 进行存储
  • store.$id 作为 storage 默认的 key
  • 使用 JSON.stringify/JSON.parse 进行序列化/反序列化
  • 整个 state 默认将被持久化

如何你不想使用默认的配置,那么你可以将一个对象传递给 Store 的 persist 属性来配置持久化。

  • key

  • paths

9. 总结

  • Pinia是用来做什么的?
    • 新一代的状态管理工具,替代vuex
  • Pinia中还需要mutation吗?
    • 不需要,action 既支持同步也支持异步
  • Pinia如何实现getter?
    • computed计算属性函数
  • Pinia产生的Store如何解构赋值数据保持响应式?
    • storeToRefs
  • Pinia 如何快速实现持久化?
    • pinia-plugin-persistedstate

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

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

相关文章

PhPMyadmin-漏洞复现

前情提要:首先将我们的PHP版本设置在5.5以上 一、通过⽇志⽂件拿Shell 1.搭建好环境后进行管理员登录 2.进入后点击SQL进行sql命令行操作 3.在输入框内输入set global general_logon; 将日志保存设置为开启状态 4.在输入 set global general_log_file 你要将日志…

未授权访问漏洞(非重点 中)

6.Hadoop 1.在 fofa 使用 port"8088" && app"Hadoop" 获取资源 2.打开后若无需登录,则存在漏洞 7.ActiveMQ 1.在 fofa 使用 body"ActiveMQ" && port"8161" 获取资源 2.打开后若点击登录,默认账户密码为 admin/adm…

无线领夹麦克风怎么挑选,2024年8月领夹麦挑选不踩雷攻略

在数字时代的浪潮中,每个人都可以成为自己故事的讲述者。从街头巷尾的Vlog达人,到专业演播室的主持人,再到远程教育的讲师,无线领夹麦克风正悄然改变着音频采集的方式。它不再局限于传统录音棚的束缚,而是融入了日常生…

C:指针学习(1)-学习笔记

目录 前言: 知识回顾: 1、const 1.1 const修饰普通变量 1.2 const修饰指针变量 1.3 总结: 2、指针运算 2.1 指针-整数 2.2 指针-指针 2.3 指针的关系运算 3、指针的使用 结语: 前言: 距离上一次更新关于初…

Java语言程序设计——篇十一(6)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

【Python_PySide6学习笔记(三十七)】清空QLayout中所有控件的方法

清空QLayout中所有控件的方法 清空QLayout中所有控件的方法前言正文1、takeAt()方法2、自定义f_clearLayoutFunc()方法3、setParent(None)方法 清空QLayout中所有控件的方法 前言 在 GUI 开发中,当我们使用 PySide6(或兼容的PyQt6)的 QVBox…

Sol盗u、sol链上的USDT盗窃:警惕恶意智能合约

随着区块链技术的普及,Solana链上的应用和用户数量不断增加。然而,这也为不法分子提供了可乘之机,恶意智能合约逐渐成为盗取USDT等加密资产的一种常见手段。本文将详细介绍恶意智能合约的工作原理,并提供防范措施,帮助…

【OpenCV C++20 学习笔记】Canny边缘检测

Canny边缘检测 原理步骤 API实例 原理 Canny边缘检测也称为“最优检测”(optimal detector),它的开发主要有以下3个目标: 低错误率:只检测真实存在的边缘良好的定位:检测出来的边缘与真实的边缘之间的距离要达到最小最小的反馈&…

报错Process exited with an error: 1 (Exit value: 1)

问题描述 运行springboot程序,程序报错 Process exited with an error: 1 (Exit value: 1)打开错误描述,发现是端口8080被占用(我们的端口号未必一致,改成你报错的端口) 问题分析 明确报错内容后,关闭…

SNAT、DNAT 防火墙规则

文章目录 一、SNAT原理与应用案列:1.给服务器和路由器(以liunx替代)做好准备工作(安装iptables和关闭firewalld防火墙)2.如果安装了iptables,设置80端口的访问为允许(liunx1:充当服务器)3.设置ens36网卡的地址为10.0.0.1(liunx2:充当路由器)4.修改liunx1服务器的ip地址和网关5.…

【Android Studio】图标一键生成 Image Asset Studio(一键各机型适配图标生成工具-告别一个一个替换)

文章目录 方法一:原始替换方法二:Image Asset Studio 方法一:原始替换 https://blog.csdn.net/xzzteach/article/details/140821856 方法二:Image Asset Studio 自动替换

易捷OA协同办公系统 ShowPic接口任意文件读取漏洞复现 [附POC]

文章目录 易捷OA协同办公系统 ShowPic接口任意文件读取漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现易捷OA协同办公系统 ShowPic接口任意文件读取漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相…

在当今的大环境下,怎么做好一名嵌入式工程师?

不知不觉2024年已经过了一半了,我在csdn也更新了不少文章,也有很多想说的,没有地方发,想来想去,也就发在这里了,反正也没有多少人看 2024年目前大环境大家都应该很清楚,最新消息,英…

登录页滑块验证图

效果图 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> <b…

Omnissa Horizon 8 2406 (8.13) 发布 - 虚拟桌面基础架构 (VDI) 和应用软件

Omnissa Horizon 8 2406 (8.13) 发布 - 虚拟桌面基础架构 (VDI) 和应用软件 之前称为 VMware Horizon, 通过高效、安全的虚拟桌面交付增强您的工作空间 请访问原文链接&#xff1a;https://sysin.org/blog/omnissa-horizon-8/&#xff0c;查看最新版。原创作品&#xff0c;转…

【弱监督时间动作定位】ACGNet: Action Complement Graph Network for WSTAL 论文阅读

ACGNet: Action Complement Graph Network for Weakly-supervised Temporal Action Localization 论文阅读 AbstractIntroductionRelated WorkAction Complement Graph NetworkMethod OverviewAction Complement GraphGraph InferenceTraining Objective ExperimentsConclusion…

广告牌安全隐忧多?撞击震动预警终端,守护城市安全网

据央视新闻最新报道&#xff0c;7月22日晚21时左右&#xff0c;云南省昆明市盘龙区金江路一临街商铺的五楼顶部广告牌突发脱落事故&#xff0c;该意外事件已导致五人受伤&#xff0c;再次为公众安全敲响了警钟。这一事件深刻凸显了加强对城市中各类广告牌及其他悬挂设施安全状态…

夜神模拟器抓取app包

夜神模拟器抓取app包 使用到的工具有 夜神模拟器 kali burp 具体步骤&#xff1a; 1&#xff0c;模拟器设置代理&#xff0c;下载bp的证书 2&#xff0c;利用kali openssl将证书转为可信任证书 3&#xff0c;模拟器开启开发者模式 4&#xff0c;在夜神模拟器终端运行命令安装证…

C# 集合操作的艺术:深入解析数据分区策略与高效筛选技巧(Skip、SkipWhile、Take、TakeWhile)

文章目录 概述Skip 和 SkipWhile 方法Take 和 TakeWhile 方法综合应用示例总结 在C#中&#xff0c;LINQ&#xff08;语言集成查询&#xff09;提供了一种非常方便的方式来处理数据集合。本文将详细介绍四种数据分区方法&#xff1a;Skip、SkipWhile、Take、TakeWhile&#xff0…

2024固态选购指南,可以买贵的但不能买贵了

前两天谈到三星后院“起火”&#xff0c;也就是大规模半导体工人罢工&#xff0c;有一部分同学就焦虑起来了。 怕内存和固态近期涨价&#xff0c;纷纷发私信询问配置问题&#xff0c;阿红也大致看了下&#xff0c;大件搭配方面大家都没啥问题了&#xff0c;但唯独在众多固态硬…