pinia的理解

news2024/11/18 2:44:27

 Vue组件通讯类型

组件通讯的基本概念 以及pinia和vuex之间的一些差异

父子,子父,祖孙跨层级,非父子任意组件之间的通讯,对此进行一些介绍。

而无论是vuex还是pinia都是属于非父子组件之间任意通讯的一种状态管理模式,可以帮助我们对任意组件的数据进行一个共享和传递操作。那么如果要了解pinia的话,应该先对vuex进行一个了解。

 Vuex的核心层次

在vuex中如果我们想要对state,getters,mutations以及actions进行操作的话,我们可以使用更为方便的映射处理,比如mapState,mapGetters,mapMutations以及mapActions。其实我们在组件中可以直接调用,但是利用映射的方式可能会变的更为的简便,假若对于mapMutations和mapActions进行一个直接调用的话,我们可以利用commit进行提交Mutations操作,或者是利用dispatch分发Actions处理。

需要注意的是,在进行映射操作的时候,其组件的位置是什么?显然mapState和mapGetters是映射在computed这一位置,而mapMutations和mapActions是映射到了methods这一位置。  

在这些核心层次操作中,像getters它的性质相当于我们组件当中的computed属性计算,而进行mutations修改数据的时候通常会强烈建议使用的是同步,那么为什么不使用异步?可以进行异步但是并不建议,因为我们在使用vue dvtos的时候进行我们的数据跟踪是无法正常跟踪到mutations中的异步操作的,所以建议使用action进行异步操作的处理。

那么至于namespaced命名空间的使用是和modules模块拆分进行结合的,因为在vuex当中,它的核心概念是单一的仓库和单一的状态树。这个核心概念是vuex的一个核心设计理念。这就意味着整个应用状态都将存储在单一的状态树中,当应用规模变得更大的时候,为了更好的组织和维护我们的一个状态,vuex则提供了modules模块拆分和namespaced命名空间支持我们模块化的管理。

而modules则允许我们vuex仓库分割成各个不同的模块,每个模块又有自己的state,getters,mutations和actions,这就可以将大型的应用分解为较小可维护的部分,那么namespaced命名空间进行管理的时候,是为了防止模块中的state,getters,mutations和actions进行一个冲突处理,这就意味着我们可以在模块当中去使用相同的名称,利用的是namespaced: true进行的一个命名空间的一个隔离的操作。

在我们理解了vuex的核心层次后,我们才能够理解,为什么从vue2升级到vue3中,我们的状态管理模式从vuex也会升级到pinia。

 Pinia核心层次理解

升级到pinia之后, 我们会发现原来vuex中的七个核心层次当中操作步骤太为繁琐,包括我们的数据更新mutations和actions可以会考虑将其进行一个合并,如果我们的数据修改既可以支持同步也可以支持异步的话,是不是可以直接在一个层级当中进行一个统一处理呢?如果我们的modules和

namespaced需要进行一个去除的话,那么这就意味着我们的pinia其核心理念需要发生一定的变化,所以我们的pinia采用了多仓库的一个设计模式,相当于vuex单一仓库的模式,pinia的多仓库则提供了更灵活的一个机制,在pinia当中,我们的层次主要包括了(以上四个),我们将vuex当中的modules,namespace以及数据修改mutations进行一个去除,使得piana的层次变得更为的精简,理解也变得更为的一个简单,应用就变得更为的快捷,所以在piana当中,我们可以利用其多仓库的概念,建立起多个store,而每个仓库都有自己的(以上四个),那么像这样的一个处理,就有助于我们大型的一个状态的应用,所以在我们进行piana理解的时候,需要强化的是vue组件通讯的层次,以及横向比较vuex和piana她们之间的核心层次的一个关系,当我们分析好着一些内容以后,我们才能更深入的理解piania的一个应用,但是需要去强化的一个问题就是piana底层原理的一个实现,piana使用的是观察者模式,而不是传统的订阅发布模式,在观察者模式当中,我们的对象其实是维护了一系列的依赖与它的一个对象,当观察者的状态发生状态时,所有观察者都有得到通知并会实现更新的一个操作,那么我们在进行piana底层原理理解的时候,是明确piana底层原理实际和vue3的核心机制是一样的,因为vue3使用的是观察者模式。

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

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

相关文章

Python爬虫|使用urllib获取百度首页源码

在这个博客中,我们将一起探索百度首页的源码,深入了解从URL请求到页面呈现的全过程。我们将使用Python的urllib.request库来模拟浏览器发送请求,并解码响应中的页面源码。通过分析源码,我们将揭示网页的结构、内容和背后的工作原理…

mysql的gtid主从复制,从库误操作更新操作,

一:查看mysql的从库,发现sql进程状态 “no”.提示执行传输过来的binlog日志,执行失败, 二:查看主库对应的二进制日志的gtid地方。插入一些数据。 # mysqlbinlog --base64-outputdecode-rows -v mysql-bin.000001 |gre…

echarts -- 柱状图之柱状条如何显示白色侧阴影且鼠标移入时高亮

有个图表是要求柱状条的右下侧显示一个白色的侧阴影,一直没找到合适的方法, 加border或者shadowColor都达不到需求的效果。 因为柱状图 中series里可以包含多组数据,有几组就代表一个系列中有几个数据。这就代表series里要写七组数据。 对于上…

git-生成证书、公钥、私钥、error setting certificate verify locations解决方法

解决方法 方法1-配置证书、公钥、私钥打开Git Bash设置名称和邮箱执行,~/.ssh执行,ssh-keygen -t rsa -C "这是你的邮箱",如图:进入文件夹可以看到用记事本之类的软件打开id_rsa.pub文件,并且复制全部内容。…

动态规划篇-04:完全平方数

279、完全平方数 状态转移方程 base case 当n 0 时,和为n的完全平方数的最少数量为0. 明确状态 “原问题或子问题中变化的变量” 在本题中,状态是 “完全平方数的最少数量”。因为当我们选择不同的完全平方数的时候,所需完全平方数的数量…

两个Mesh路由、一个5口交换机,打造智能家居无缝网络覆盖

在现代家庭中,无线网络已经成为了必需品,每个人都希望享受到无缝连接的畅快体验。然而,由于信号覆盖范围的限制和信号干扰等问题,很多家庭在组网方面遇到了一些困难。 对于有需求的家庭而言,两个Mesh路由器是一种非常…

错误处理(基于ESP-IDF)

主要参考资料 B站Up主孤独的二进制《错误处理 - 乐鑫 ESP32 物联网开发框架 ESP-IDF 开发入门》 ESP-IDF编程指南>API指南>错误消息: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-guides/error-handling.html ESP-IDF编程指南>API指南>严…

Python - 深夜数据结构与算法之 BloomFilter

目录 一.引言 二.BloomFilter 简介 1.Hash Table 2.Bloom Filter 3.Bloom 示意图 4.Bloom 应用 三.Bloom Filter 实现 1.Python 实现 2.Python 测试 四.总结 一.引言 布隆过滤器 BloomFilter 是位运算在工业级场景应用的典范,其通过 bit 位保存元素是否存…

Linux/Traverxec

Enumeration nmap 使用nmap快速扫描目标,发现对外开放了22和80,第一个问题就是问80端口运行的是什么服务,针对这两个端口扫描对应的详细信息后就能得到答案 Nostromo 从nmap的扫描结果可以看到,目标开启了80端口,且…

MATLAB对话框与菜单设计实验

本文MATLAB源码,下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740733 一、实验目的 1.掌握建立控件对象的方法。 2.掌握对话框设计方法。 3.掌握菜单设计方法。 二、实验内容 建立如下图所示的菜单。菜单…

基于鸿蒙HarmonyOS 元服务开发一款公司运营应用(ArkTS API 9)

前言 最近基于Harmony OS最新版本开发了一个作品,本文来详细讲解一下,如何我是如何开发这个作品的。以及如何使用OpenHarmony,基于ArkTS,API 9来开发一个属于自己的元服务。 废话不多说,我的作品名称叫做Company Oper…

如何通过Burp Suite专业版构建CSRF PoC

Burp Suite是一款强大的渗透测试利器&#xff0c;可以利用它来高效的执行渗透攻击&#xff0c;接下来介绍如何通过Burp Suite Pro来构建CSRF PoC。 在Bupr中找到拦截的请求&#xff0c;右键选择Engagement tools > Generate CSRF PoC 利用CSRF PoC生成器自动生成HTML <h…

2.2 物理层

2.2 物理层 2.2.1 物理层的基本概念 1、物理层主要解决在各种传输媒体上传输比特0和1的问题&#xff0c;进而给数据链路层提供透明传输比特流的服务 2、由于传输媒体的种类太多&#xff08;例如同轴电缆、光纤、无线电波等&#xff09;&#xff0c;物理连接方式也有很多例如…

K8S--Ingress的作用

原文网址&#xff1a;K8S--Ingress的作用-CSDN博客 简介 本文介绍K8S的Ingress的作用。 ----------------------------------------------------------------------------------------------- 分享Java真实高频面试题&#xff0c;吊打面试官&#xff1a; Java后端真实面试题…

redis数据结构源码分析——跳表zset

文章目录 跳表的基本思想特点节点与结构跳跃表节点zskiplistNode属性 跳跃表链表属性 跳表的设计思想和优势API解析zslCreate&#xff08;创建跳跃表&#xff09;zslCreateNode&#xff08;创建节点&#xff09;zslGetRank&#xff08;查找排位&#xff09;zslDelete&#xff0…

【RPC】序列化:对象怎么在网络中传输?

今天来聊下RPC框架中的序列化。在不同的场景下合理地选择序列化方式&#xff0c;对提升RPC框架整体的稳定性和性能是至关重要的。 一、为什么需要序列化&#xff1f; 首先&#xff0c;我们得知道什么是序列化与反序列化。 网络传输的数据必须是二进制数据&#xff0c;但调用…

2019年认证杯SPSSPRO杯数学建模D题(第一阶段)5G时代引发的道路规划革命全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 5G下十字路口车辆通行效率的讨论和建模 D题 5G时代引发的道路规划革命 原题再现&#xff1a; 忙着回家或上班的司机们都知道交通堵塞既浪费时间又浪费燃料&#xff0c;甚至有的时候会带来情绪上的巨大影响&#xff0c;引发一系列的交通问题。…

图像的初识

一、图像的数组表示 RGB能够构成人眼所能识别的所有颜色。 二、图像的变换 Example&#xff1a; img.shape Out[329]: (512, 768, 3) img.dtype Out[330]: dtype(uint8) #补值变换 shift_temp_img [255,255,255] - img shift_img Image.fromarray(shift_temp_img.astype(ui…

【REST2SQL】09 给Go的可执行文件exe加图标和版本信息等

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…

关于2024年3月10日PMP考试的常见问题解答

2024年第一场PMP考试3月10日&#xff08;星期日&#xff09;举行&#xff0c;目前报名正在进行中。请参加了这次考试或者计划在2024年尽早取证的伙伴们抓紧报名&#xff0c;本次报名截止到1月18日。 说句题外话&#xff0c;PMP的考试安排越来越随性了&#xff0c;哈&#xff0…