vue3【抛弃vuex,使用pinia】

news2024/11/29 4:43:29

Pinia Pinia 中文文档

  • 一个全新的用于Vue的状态管理库
  • 下一个版本的vuex,也就是vuex5.0
  • vue2 和vue3都支持
  • 在vue2中pinia使用vuex的现有接口,所以不能与vuex一起使用
  • 相比vuex有更完美的TypeScript支持
  • 支持服务器端渲染

Pinia核心概念

Pinia 从使用角度和之前的 Vuex 几乎是一样的。反而比vuex更简单了

复习一下vuex的四个核心概念:

  • state 存放状态
  • Getters 类似计算属性
  • Mutations 修改状态
  • Actions 异步操作

Store(如 Pinia) 是一个保存状态和业务逻的实体,它不绑定到您的组件树,换句话说,它承截全局 state,它有点像一个始终存在的组件,每个人都可以读取和写入。Pinia有三个核心概念

  • state 类似组件的 data,用来存储全局状态
  • Getters 类似计算属性
  • Actions 同步异步都支持 (vuex中同步操作用mutations,异步操作用actions,太麻烦了)

Pinia的使用 

1、安装

npm install pinia

 2、在main.js引入

import { createPinia } from 'pinia' //引入pinia

app.use(createPinia())

3、新建一个store文件夹,在该文件夹下新建一个index.js

我们先定义一个如下的基础配置文件

import { defineStore } from "pinia";
// 1、定义容器
// defineStore的参数1:容器的ID,必须唯一,将来Pinia会把所有的容器挂载到根容器
// defineStore的参数2:选项对象
// 返回值:是一个函数,使用时通过调用得到容器实例
export const mainStore = defineStore('main', {
      // 类似于组件的data,用来存储全局状态的
      // 1、必须是函数:这样是为了在服务端渲染的是会避免交叉请求导致的数据状态污染
      // 2、闭学式箭头函数,是为了更好的 TS 类型推导
      state: () => {
            return {
                  count: 100
            }
      },
      // 类似组件的computed,用来封装计算属性,有缓存的功能
      getters: {

      },
      // 类似于组件的methods,封装业务逻辑,修改state
      actions: {

      }
})
// 2、使用容器中的state
// 3、修改state
// 4、容器中的aciton的使用

4、在组件中使用上面定义的count值

 结果显示正常:

 注意:当我们要访问store里面的多个数据时,虽然这种方式不失去响应式但下面这样写就会显得繁琐

 因此,我们可以通过 解构赋值 来简化代码

 但以上写法有个问题:通过上面的方式拿到的数据不是响应式的,是一次性的

来验证一下:点击按钮,数值是不会变化的

 解决方法:就是使用pinia提供的官方API--storeToRefs,将数据转为响应式数据

import { storeToRefs } from 'pinia'
import { mainStore } from '../store/index'
const storedata = mainStore()
// pinia其实就是把state数据都做了reactive处理了
// 因此需要把结构出来的数据做ref响应式代理
const { count, num } = storeToRefs(storedata)
function addCount() {
    storedata.count++
}

 5、修改state状态

  • 方式一:最简单的方式,直接修改

 

  •  方式二:如果需要修改多个数据 ,建议使用 $patch 批量更新

  • 方式三:更好的批量更新的方式: $patch 传递一个函数,批量更新

  • 方式四: 逻辑比较多的时候可以封装到 actions 中做处理

下面只是举个例子,假设逻辑很复杂,我们可以在store的index.js的actions中编写逻辑函数

 编写好之后,在页面中直接调用即可

 同样可以实现效果:

 注意:不能使用箭头函数定义action,因为箭头函数绑定外部this,使用箭头函数this指向就变了

 6、getters的使用

在getters中定义一个属性

或者用this去访问count 

 

页面使用 

 

 

 7、store.$reset()  

当我们接收到pinia数据且对其数据进行了大量修改又想还原时,调用此方法就可以将接收的pinia数据 全部重置还原 

 

点击还原,可以重置到初始化状态、 

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

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

相关文章

【论文笔记】Learning Latent Dynamics for Planning from Pixels

论文及代码解读:Learning Latent Dynamics for Planning from Pixels 文章目录 论文及代码解读:Learning Latent Dynamics for Planning from Pixels3. Recurrent State Space ModelLatent dynamicsVariational encoderTraining objectiveDeterministic …

Linux系统编程学习 NO.2 ——环境配置和基础指令的学习

操作系统根据使用方式分类 操作系统按照使用类型可分为图形化操作系统和指令操作系统。图形化操作系统的本质其实也是根据指令来操作的。指令更贴近操作系统的底层。而我在学习Linux系统编程时,采用命令行的方式来学习。 补充一个小知识:早期命令行操作…

原装RS罗德与施瓦茨FSW85、FSW50,FSW67信号+频谱分析仪

Rohde & Schwarz FSW85 2Hz至85GHz信号和频谱分析仪 特征 10 kHz 偏移&#xff08;1 GHz 载波&#xff09;时的低相位噪声为 –137 dBc (1 Hz) WCDMA ACLR 测量的 -88 dBc 动态范围&#xff08;带噪声消除&#xff09; 高达 5 GHz 的分析带宽 < 0.4 dB 总测量不确定度高…

投资回报率业内最高!FortiGate在CyberRatings防火墙独立测试中收获近乎完美表现

对于需参考客观产品数据以制定明智采购决策的企业 IT 采购方而言&#xff0c;公正的第三方测试数据不失为一项关键参考。幸运的是&#xff0c;国际第三方安全测评机构CyberRatings始终秉持公平公正的独立测试理念&#xff0c;致力于量化网络安全风险&#xff0c;为多种网络安全…

用gost实现远程端口映射

gost 是一个非常优秀的tunnel. 支持多种形式的端口映射。 本文只介绍远程端口映射方式的tunnel. 远程端口映射的意思就是&#xff0c;将本地端的某个服务的端口A&#xff08;tcp/udp&#xff09;映射到远程的某个端口P上&#xff0c; 用户通过访问远程的端口P来访问本地端的这…

Linux多路转接之poll

文章目录 一、poll的认识二、编写poll方案服务器三、poll方案多路转接的总结 一、poll的认识 多路转接技术是在不断更新进步的&#xff0c;一开始多路转接采用的是select方案&#xff0c;但是select方案存在的缺点比较多&#xff0c;所以在此基础上改进&#xff0c;产生了poll…

怎么缩小照片的kb,压缩照片kb的几种方法

缩小照片的KB大小是我们日常工作生活中遇到的常见问题。虽然听起来十分专业&#xff0c;但其实很简单。照片的KB是指照片文件的大小&#xff0c;通常以“KB”为单位表示。缩小照片的KB就是减小照片文件的大小&#xff0c;以便占用更少的磁盘空间或更快地上传和下载照片。在实际…

什么是BI ?BI 能给企业带来什么价值?

目前&#xff0c;社会数字化程度还在不断加深&#xff0c;数据量也伴随着一同高速增长&#xff0c;许多人预测未来将是数据处理时代&#xff0c;而作为数据类解决方案的商业智能BI也会持续扩张市场&#xff0c;朝着不同行业BI商业智能的方向发展。 利用BI工具系统&#xff0c;…

MySQL 的 varchar 存储原理:InnoDB 记录存储结构

1. InnoDB 是干嘛的&#xff1f; InnoDB 是一个将表中的数据存储到磁盘上的存储引擎。 2. InnoDB 是如何读写数据的&#xff1f; InnoDB 处理数据的过程是发生在内存中的&#xff0c;需要把磁盘中的数据加载到内存中&#xff0c;如果是处理写入或修改请求的话&#xff0c;还…

统计学01: 中心极限定律、正态分布、z-score

<~生~信~交~流~与~合~作~请~关~注~公~众~号生信探索> 中心极限定律 中心极限定律&#xff1a;当样本样足够大时&#xff08;n≥30&#xff09;&#xff0c;样本的mean等于总体的mean 例如&#xff0c;对学校的学生身高抽样&#xff0c;100组每组30人&#xff0c;每组的身…

JavaScript沙箱

1、什么是沙箱 在计算机安全中&#xff0c;沙箱&#xff08;Sandbox&#xff09;是一种用于隔离正在运行程序的安全机制&#xff0c;通常用于执行未经测试或者不受信任的程序或代码&#xff0c;它会为待执行的程序创建一个独立的执行环境&#xff0c;内部程序的执行不会影响到…

【JOSE约瑟 JZS-7E14/11静态可调延时中间继电器 自动控制电路 接通、分断电路】

JZS-7E14/11静态可调延时中间继电器品牌:JOSEF约瑟名称:静态可调延时中间继电器型号:JZS-7E14/11额定电压:6220VDC&#xff1b;6380VAC触点容量:10A/250V10A/220VDC功率消耗:≤6W 一 用途 JZS-7E系列中间继电器用于各种保护和自动控制装置中,以增加保护和控制回路的触点容量. …

Java面试知识点(全)-数据结构和算法

Java面试知识点(全) 导航&#xff1a; https://nanxiang.blog.csdn.net/article/details/130640392 注&#xff1a;随时更新 基础的数据结构 数组 数组的下标寻址十分迅速&#xff0c;但计算机的内存是有限的&#xff0c;故数组的长度也是有限的&#xff0c;实际应用当中的数据…

伙伴云CEO戴志康:低代码与GPT,是赛车手和领航员的角色

GPT来的突然&#xff0c;不仅打了那些对AI冷眼相待的人们一个措手不及&#xff0c;也顺势带动了全民”AIGC”讨论热潮&#xff0c;让大众开始期待它的到来&#xff0c;能为这个人间添上多少精彩.... 万众期待下&#xff0c;GPT也没谦虚&#xff0c;大笔一挥间便融入了到了协同办…

Java集合常见面试题

1、Java集合概述 Java集合&#xff0c;也叫作容器。由两大接口派生而来&#xff1a;Collection接口&#xff0c;用于存放单一元素&#xff1b;Map接口&#xff0c;主要用于存放键值对。对于Collection接口&#xff0c;下面又有三个主要的子接口&#xff1a;List、Set、Queue 2…

桌面远程工具推荐

目前市面上的远程工具多如牛毛&#xff0c;很多人不知道怎么选择&#xff0c;下面小编介绍两种桌面远程工具&#xff0c;它们都是跨平台的&#xff0c;均支持Windows&#xff0c;Mac OS&#xff0c;IOS和安卓&#xff0c;分别是RayLink&#xff0c;VNC&#xff0c;好用&#xf…

eKuiper 源码解读:从一条 SQL 到流处理任务的旅程

概述 LF Edge eKuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件&#xff0c;可以运行在各类资源受限的边缘设备上。eKuiper 的主要目标是在边缘端提供一个流媒体软件框架。其规则引擎允许用户提供基于SQL 或基于图形&#xff08;类似于 Node-RED&#xff09;的…

权威硬核认证|数说故事携手IDEA共创学术论文获NLP国际顶会 ACL 2023收录

日前&#xff0c;数说故事携手IDEA共创的学术论文——《A Unified One-Step Solution for Aspect Sentiment Quad Prediction (一个统一的单步情感四元组识别方法) 》被国际学术顶会 ACL 2023 接收为 Findings长文。这是继上一年IDEA数说故事实验室论文获「国际AI顶会IJCAI-ECA…

加密解密软件VMProtect教程(六):主窗口之控制面板“项目”部分(1)

VMProtect 是保护应用程序代码免遭分析和破解的可靠工具&#xff0c;但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。 接下来为大家介绍关于VMProtect主窗口中的控制面板&#xff0c;其中包括&#xff1a;“项目”部分、“功…

AD20 原理图设计流程

Altium Designer 20 的原理图设计大致可以分为9个步骤&#xff1a; &#xff08;1&#xff09;新建原理图。这是原理图设计的第一步。 &#xff08;2&#xff09;图纸设置。图纸设置就是要设置图纸的大小&#xff0c;方向等信息。图纸设置要根据电路图的内容和标准化来进行。…