vue3的 状态管理库

news/2024/9/21 3:30:27/文章来源:https://www.cnblogs.com/bky419/p/18380114

1.vue 的状态管理库

vue 常用的状态管理库有 vuex Pinia,两者的区别如下:

  • 架构设计‌:Vuex 采用全局单例模式,通过一个store对象来管理所有的状态;而 Pinia 采用了分离模式,每个组件都拥有自己的store实例。
  • 模块设计:Vuex 包含 states、mutations、getters、actions、modules,mutations用于同步修改状态,actions用于处理异步操作;而 Pinia 没有 mutations,只有 state、getters 和 actions。
  • 语法和使用‌:Vuex 的语法和用法相对传统,对于熟悉Vue 2的开发者来说可能更加熟悉;而 Pinia 的语法比Vuex更容易理解和使用,提供了更好的TypeScript支持,与Vue 3的Composition API紧密结合‌。 ‌
  • 体积和性能‌:Vuex 的体积相对较大,但性能稳定可靠‌;而 Pinia 的体积较小,约1KB,且性能较好,因为它使用了新的ES6语法和新的数据处理方式。 ‌
  • 社区支持和适用场景‌:Vuex 是Vue.js官方出品,社区支持较强,拥有丰富的文档和示例,适合复杂的项目和对状态管理有更高要求的开发者。而 Pinia 在Vue 3的Composition API生态中得到了官方支持,更适合初学者和快速开发项目‌。

  注释:
    Vue 3 匹配 Vuex 4 的文档。 Vue 2 匹配 Vuex 3 的文档;而 Pinia 同时支持 Vue 2 和 Vue 3 。vue3 由于官方支持 Pinia,故本文后面介绍的状态管理库为 Pinia

    vuex 和 Pinia 的区别,参考:https://blog.csdn.net/qq_41581588/article/details/141062869

 

2. Pinia 简介

Pinia 是 Vue 的专属状态管理库,同时支持 Vue 2 和 Vue 3。(官网文档主要是面向 Vue 3 用户,但在必要时会标注出 Vue 2 的内容)

  Pinia 让开发者跨组件或页面共享状态。

  Pinia 不强制要求开发者使用组合式 API。

 

3. Pinia 的使用

   注意:以下内容仅适用于 vue3,适用于vue2 的详见 Pinia官网。

 

  3.1 引入:main.js(ts) 文件中写入如下内容

 

  3.2 定义

  (1)组合式写法(推荐)

 

   (2)选项式写法

 

  3.3 访问:组件中使用

 先定义一个 /src/store/demo.js 文件

 然后在 vue3 组件中访问 state、getter、 action 

     注释:
      实际运用中,store 中的 states 尽量是在定义文件的 actions 中进行修改,而非外部组件或其他文件中。(如需在外部组件或其他文件中修改,详见 Pinia 官网)
      为了从 store 中提取属性时保持其响应性,需要使用 storeToRefs(),它将为每一个响应式属性创建引用。

 

 

 

 

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

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

相关文章

南沙信息学家教陈老师: 1349:【例4-10】最优布线问题

​ 【题目描述】学校有nn台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。 当然,如果将任意两台计算机都用数据线连接,费用将是相当庞大的。为了节…

基于springboot的grpc服务端demo

一个springboot 实现grpc 服务端demo的简单配置,包含java配置 和 代理配置1. Javamaven配置点击查看代码 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www…

博客园美化系列第一弹

博客园美化系列第一弹 首先要确保你已经申请开通博客「理由随便写,积极向上即可」,且已通过审核。 然后进入【设置】,申请 js 权限。 申请理由举例「从网上找的,当时直接复制上就通过了」: 尊敬的博客园管理员: 您好,我想通过 js 定制化我的博客,麻烦通过下我的申请。 …

高通ramdump

背景 高通平台下提供了一个工具,专门用来抓取内核死机以后的dump信息。如果只是非系统层面的crash(例如底层应用,安卓程序),则不能抓取dump信息。 在阅读一些文档的时候知道有这个功能,但是一直没时间尝试。 介绍 流程为: 1、进入dump模式:系统需要触发crash, 同时机器…

QL5010-16-ASEMI逆变焊机专用整流桥QL5010

QL5010-16-ASEMI逆变焊机专用整流桥QL5010编辑:ll QL5010-16-ASEMI逆变焊机专用整流桥QL5010 型号:QL5010 品牌:ASEMI 封装:KBPC-4 批号:2024+ 类型:整流模块 电流:50A 电压:1600V 安装方式:直插式封装 特性:大功率、整流桥 产品引线数量:4 产品内部芯片个数:4 产品…

解决方案 | IrfanView如何滑动滚轮图像缩放?

这是个bug,已经很多人反映了。目前没有比较好的解决方法,还是使用ctrl+滚轮最好。如果需要设置滚轮放大的话,按照下图即可,但是带来一个bug,你无法通过方向键或者菜单的箭头浏览 下一张图片。综上所述,你有3个选择,1 接受使用 ctrl+滚轮进行放大2 设置--关闭”显示所有支…

Python开发工具:VSCode+插件

本篇是 Python 系列教程第 3 篇,更多内容敬请访问我的 Python 合集Visual Studio Code的安装非常简单,就不放这里增加文章篇幅了。 相比PyCharm,VSCode更加轻量,启动速度快。并且搭配Python插件就能实现和Pycharm一样的代码提示、高亮效果。 1 安装插件 安装插件也非常简单…

jmeter之性能测试

性能测试 一、性能测试的介绍 1、定义:通过某些工具或手段来检测软件的某些指标是否达到要求,这就是性能测试。 功能测试:a,b 两个软件,a可以打开,b也可以打开 性能测试:a,b 两个软件,a可以打开8s,b也可以打开2s 说明:b的性能好 2、性能测试是在功能测试之后进行; 3、…

(十九)transformers解码策略

文本生成策略 文本生成对于许多 NLP 任务至关重要,例如开放式文本生成、摘要、翻译和 更多。它还在各种混合模态应用程序中发挥作用,这些应用程序将文本作为输出,例如语音到文本 以及 vision-to-text。一些可以生成文本的模型包括 GPT2、XLNet、OpenAI GPT、CTRL、Transform…

Python开发工具:PyCharm

本文是 Python 系列教程第 2 篇,更多内容敬请访问我的 Python 合集 1 安装 官网下载地址https://www.jetbrains.com.cn/pycharm/,文件比较大(约861MB)请耐心等待双击exe安装安装成功后会有一个30天的试用期,激活教程见先插个眼,有空更新激活教程 2 创建第一个项目图中这句…

thinkPHP6 反序列化

thinkPHP6 反序列化 thinkPHP v6.0.0-6.0.3 环境搭建 新版v6基于 PHP7.1+ 开发 php-7.3.4 ThinkPHP v6.0.3使用composer进行安装 composer create-project topthink/think=6.0.3 tp6.0然后利用 phpstudy 打开框架,简单配置如下子,再同样的道理配置 phpstorm 的调试。 但是万事…

由Flase引起的问题

特别抽象!起因是想用github来托管我的代码,后来发现出现了点错误 fatal: bad boolean config value flase for http.sslverify解决方案: 打开C盘 -> 搜索 .gitconfig -> 在里面修改内容即可再次回到 gitbash 上,再次输入git clone 的指令,非常好,一波未平一波又起 …