【vue3之Pinia:状态管理工具】

Pinia:状态管理工具

  • 一、认识Pinia
  • 二、定义store
  • 三、gettters
  • 四、Action
    • 1.定义普通函数
    • 2.异步实现
  • 五、storeToRefs工具函数
  • 六、pinia持久化插件
    • 1. 安装插件
    • 2. main.js 使用
    • 3. 开启
    • 4.其他配置

一、认识Pinia

Pinia 是 Vue 的最新 状态管理工具 ,是 Vuex 的 替代品
优点:

  1. 提供更加简单的API (去掉了 mutation )
  2. 提供符合,组合式风格的API (和 Vue3 新语法统一)
  3. 去掉了 modules 的概念,每一个 store 都是一个独立的模块
  4. 配合 TypeScript 更加友好,提供可靠的类型推断
    注:在Pinia中,省去了mutations和modules两个核心概念,actions里能直接同步或者异步修改state里的值

二、定义store

  1. 定义store
  2. 组件使用store

来自vue3官网:
在store.js文件夹下定义
在这里插入图片描述
选择组合式API的方式定义属性和方法:
在这里插入图片描述

在这里插入图片描述

三、gettters

Getter 完全等同于 store 的 state 的计算值。

在这里插入图片描述
然后再return一下douleCount就可以在组件中使用了:

  return {
    count,
    doubleCount,
  }

四、Action

action相当于组件中的 method。

1.定义普通函数

  const count = ref(100)

  // 声明操作数据的方法 action (普通函数)
  const addCount = () => count.value++
  const subCount = () => count.value--
  return {
    count,
    addCount,
    subCount,
  }

2.异步实现

export const useChannelStore = defineStore('channel', () => {
  // 声明数据
  const channelList = ref([])

  // 声明操作数据的方法
  const getList = async () => {
    // 支持异步
    const { data: { data }} = await axios.get('http://geek.itheima.net/v1_0/channels')
    channelList.value = data.channels
  }

  // 声明getters相关
  return {
    channelList,
    getList
  }
})

五、storeToRefs工具函数

当你从 Vuex 或其他状态管理库中获取数据时,通常会遇到解构对象属性后失去响应式的问题。这是因为解构会破坏对象的响应式性质。

在 Vue 3 中,可以通过使用 toRefs 函数来解决这个问题。toRefs 可以将包含响应式数据的对象转换为普通对象,但保留其属性的响应式性。在这里插入图片描述
方法是一个固定的函数,我们不用去更改方法,顶多调用,所以不需要用storeToRefs
在这里插入图片描述
在这里插入图片描述

六、pinia持久化插件

官方文档:https://prazdevs.github.io/pinia-plugin-persistedstate/zh/

1. 安装插件

pinia-plugin-persistedstate npm i pinia-plugin-persistedstate

2. main.js 使用

import persist from 'pinia-plugin-persistedstate' ... app.use(createPinia().use(persist))

3. 开启

store仓库中的第三个配置项中,persist: true 开启

4.其他配置

详情请见官方文档
在这里插入图片描述
在这里插入图片描述
演示:

import { defineStore } from 'pinia'
import { computed, ref } from 'vue'

// 定义store
// defineStore(仓库的唯一标识, () => { ... })
export const useCounterStore = defineStore('counter', () => {
  // 声明数据 state - count
  const count = ref(100)

  // 声明操作数据的方法 action (普通函数)
  const addCount = () => count.value++
  const subCount = () => count.value--

  // 声明基于数据派生的计算属性 getters (computed)
  const double = computed(() => count.value * 2)

  // 声明数据 state - msg
  const msg = ref('hello pinia')
  return {
    count,
    double,
    addCount,
    subCount,

    msg,
  }
}, {
  // persist: true // 开启当前模块的持久化
  persist: {
    key: 'hm-counter', // 修改本地存储的唯一标识
    paths: ['count'] // 存储的是哪些数据
  }
})

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于多权威属性加密论文阅读

来源于2007年Multi-authority Attribute Based Encryption 从单权威机构到多权威机构的意义是什么呢? 基础方案(单权威方案SW)支持数据持有者对数据进行加密使用指定的属性集合并且指定一个数值d。当一个用户需要使用该数据时,需…

盘点CSV文件在Excel中打开后乱码问题的两种处理方法

目录 一、CSV文件乱码问题概述 二、修改文件编码格式 1.识别CSV文件编码 2.修改编码格式 3.在Excel中打开修改后的CSV文件 案例 三、利用文本编辑器进行预处理 1.打开CSV文件并检查乱码 2.替换或删除乱码字符 3.保存并导入Excel 案例 四、注意事项 1、识别原始编码…

【机器学习】有监督学习算法之:逻辑回归

逻辑回归 1、引言2、逻辑回归2.1 定义2.2 基本原理2.3 公式2.3.1 核心公式2.3.2 Sigmoid函数 2.4 代码示例 3、总结 1、引言 小屌丝:鱼哥,鱼哥,求助 小鱼:咋了。 小屌丝:我被逻辑回归难住了。 小鱼:然后你…

数据结构 - 堆

这篇博客将介绍堆的概念以及堆的实现。 1. 堆的定义: 首先堆的元素按照是完全二叉树的顺序存储的。 且堆中的某个节点总是不大于或不小于其父节点的值。 根节点最大的堆叫做大堆,根节点最小的堆叫小堆。逻辑结构如下图所示: 大堆和小堆的…

ZJUBCA研报分享 | 《BTC/USDT周内效应研究》

ZJUBCA研报分享 引言 2023 年 11 月 — 2024 年初,浙大链协顺利举办为期 6 周的浙大链协加密创投训练营 (ZJUBCA Community Crypto VC Course)。在本次训练营中,我们组织了投研比赛,鼓励学员分析感兴趣的 Web3 前沿话题…

opencv解析系列 - 基于DOM提取大面积植被(如森林)

Note&#xff1a;简单提取&#xff0c;不考虑后处理&#xff08;填充空洞、平滑边界等&#xff09; #include <iostream> #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include <opencv2/opencv.hpp> using namespace cv…

Ajax (1)

什么是Ajax&#xff1a; 浏览器与服务器进行数据通讯的技术&#xff0c;动态数据交互 axios库地址&#xff1a; <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> 如何使用呢&#xff1f; 我们现有个感性的认识 <scr…

【Prometheus】k8s集群部署node-exporter

​ 目录 一、概述 1.1 prometheus简介 1.2 prometheus架构图 1.3 Exporter介绍 1.4 监控指标 1.5 参数定义 1.6 默认启用的参数 1.7 prometheus如何收集k8s/服务的–三种方式收集 二、安装node-exporter组件 【Prometheus】概念和工作原理介绍-CSDN博客 【云原生】ku…

微信小程序使用 iconfont

base64 形式引入 首先我们点击 iconfont 项目中的 项目设置 按钮&#xff0c;位置如下图所示&#xff1a; 我们勾选图中所示三种字体格式&#xff0c;选择 base64 是为了将另外两种字体转为 base64 形式&#xff0c;而选择 woff 与 ttf 字体原因如下&#xff1a; TTF 兼容性更…

【自然语言处理】NLP入门(五):1、正则表达式与Python中的实现(5):字符串常用方法:对齐方式、大小写转换详解

文章目录 一、前言二、正则表达式与Python中的实现1.字符串构造2. 字符串截取3. 字符串格式化输出4.字符转义符5. 字符串常用函数函数与方法之比较 6. 字符串常用方法1. 对齐方式center()ljust()rjust() 2. 大小写转换lower()upper()capitalize()title()swapcase() 一、前言 本…

基于.Net 的图形验证码模块

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

【探索程序员职业赛道:挑战与机遇】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

本地部署推理TextDiffuser-2:释放语言模型用于文本渲染的力量

系列文章目录 文章目录 系列文章目录一、模型下载和环境配置二、模型训练&#xff08;一&#xff09;训练布局规划器&#xff08;二&#xff09;训练扩散模型 三、模型推理&#xff08;一&#xff09;准备训练好的模型checkpoint&#xff08;二&#xff09;全参数推理&#xff…

PaddlePaddle框架安装

提示&#xff1a;可在python环境中进行安装&#xff0c;避免环境污染&#xff0c;创建命令conda create -n xxx_name python3.9,激活conda activate xxx_name 第一步&#xff1a;查看计算机平台版本 在窗口输入查看命令&#xff0c;查看CUDA的版本 nvidia-smi 二、根据以下条件…

pycharm连接远程服务器解决远程服务器文件不同步问题

一、pycharm连接远程服务器 1.前提条件 linux已经安装好虚拟环境&#xff0c;并且虚拟环境已经有python的相关环境 conda create -n name python3.10 2.连接服务器 1.进入pycharm的Settings 2.在Project里找Python Interpreter 3.点击⚙&#xff0c;再点击add 4.选择SSH…

【C++从练气到飞升】02---初识类与对象

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 ⛳️推荐 一、面向过程和面向对象初步认识 二、类的引用 1. C语言版 2. C版 三、类的定义 类的两种定义方式&#xff…

机器学习-04-分类算法-01决策树

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中分类算法&#xff0c;本篇为分类算法开篇与决策树部分。 本门课程的目标 完成一个特定行业的算法应用全过程&#xff1a; 懂业务会选择合适的算法数据处理算法训练算法调优算法融合 算法评估持续调优工程…

如何在Win系统本地部署Jupyter Notbook交互笔记并结合内网穿透实现公网远程使用

文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中&#xff0c;使用最多的无疑就是各种函数、图表、…

【前端系列】CSS 常见的选择器

CSS 常见的选择器 CSS&#xff08;层叠样式表&#xff09;是一种用于描述网页样式的标记语言&#xff0c;它定义了网页中各个元素的外观和布局。在 CSS 中&#xff0c;选择器是一种用于选择要应用样式的 HTML 元素的模式。选择器允许开发人员根据元素的类型、属性、关系等来选…

【计算机视觉】图像处理算法(其他篇)

来源&#xff1a;《OpenCV3编程入门》&#xff0c;怀念毛星云大佬&#x1f56f;️ 说明&#xff1a;本系列重点关注各种图像处理算法的原理、作用和对比 漫水填充 漫水填充法是一种用特定的颜色填充连通区域&#xff0c;通过设置可连通像素的上下限以及连通方式来达到不同的填…