当前位置: 首页 > news >正文

Vue3-Pinia

什么是Pinia

●介绍

○Pinia 是 Vue 的最新状态管理工具,是 Vuex 的替代品。○

优势

○提供更加简单的 API(去掉了 mutation)。

○提供符合组合式风格的 API,与 Vue3 新语法统一。

○去掉了 modules 的概念,每一个 store 都是一个独立的模块。

○配合 TypeScript 更加友好,提供可靠的类型推断。

○手动添加 Pinia 到 Vue 项目

○在实际开发项目的时候,关于 Pinia 的配置,可以在项目创建时自动添加。

○手动添加的步骤:

i.使用 Vite 创建一个 Vue3 项目:npm create vue@latest

ii.按照官方文档安装 pinia 到项目中。

0.基本使用

○声明数据(state)

■ref:const count = ref(100)

■声明操作数据的方法(action)

■function:const addCount = () => count.value++

■声明基于数据派生的计算属性(getters)

■computed:const double = computed(() => count.value * 2)

■Pinia 中的 action 支持异步操作。

■Pinia 产生的 store 解构赋值数据保持响应式:需要使用 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 开启自动持久化。

VueX和Pinia的区别

  1. 与 Vue 3 的集成

    • Pinia:专为 Vue 3 设计,完全利用了 Vue 3 的 Composition API。
    • Vuex:最初为 Vue 2 设计,但也兼容 Vue 3,但它的许多概念和模式更贴近 Vue 2 的选项 API。
  2. API 设计

    • Pinia:提供了一个更简洁和直观的 API,减少了样板代码,更符合组合式 API 的风格。
    • Vuex:具有更复杂的 API,包括 stategettersmutations 和 actions 等概念,这在 Vue 2 中很常见,但在 Vue 3 中可能显得有些冗余。
  3. 插件和工具

    • Pinia:内置了对 Vue Devtools 的支持,并且通过插件系统可以轻松扩展功能。
    • Vuex:同样支持 Vue Devtools,但它的插件系统和中间件机制更为复杂。
  4. 类型推断

    • Pinia:与 TypeScript 集成得更好,提供了更好的类型推断和类型定义。
    • Vuex:虽然也支持 TypeScript,但在类型推断方面可能不如 Pinia 直观。
  5. 响应式系统

    • Pinia:使用 Vue 3 的响应式系统,状态更新是响应式的,并且与 Vue 的响应式系统紧密集成。
    • Vuex:使用自己的响应式系统,这可能导致在某些情况下与 Vue 的响应式系统存在差异。
  6. 模块化

    • Pinia:支持模块化,允许你将状态分割成多个存储(stores),每个存储可以独立管理自己的状态。
    • Vuex:也支持模块化,但在模块间的通信和状态管理方面可能不如 Pinia 灵活。
  7. 性能

    • Pinia:由于其轻量级的设计,通常具有更好的性能,尤其是在大型应用中。
    • Vuex:在某些情况下,由于其更复杂的内部结构,性能可能略逊一筹。

 

为什么Pinia需要持久化?

  1. 跨会话状态保持: 用户关闭浏览器后再次打开,应用的状态可以恢复到上次使用的状态,而不是从头开始,这可以提升用户体验。

  2. 离线可用性: 对于支持离线工作的应用程序,持久化的状态可以在没有网络连接的情况下使用。

  3. 复杂应用的状态管理: 在具有复杂状态逻辑的大型应用中,用户可能不希望在每次页面刷新时都重新配置应用状态。

  4. 提升性能: 对于初始化状态需要大量计算或API调用的应用,从持久化存储中恢复状态可以减少初始化时间。

  5. 多设备同步: 如果用户的应用程序在多个设备上运行,持久化状态可以帮助在不同设备间同步状态。

  6. 用户期望: 现代web应用的用户通常期望应用具有类似本地应用的体验,包括记住他们之前的使用状态。

Pinia 作为一个状态管理库,本身并不提供持久化功能,但可以通过插件或第三方库来实现。例如,你可以使用 pinia-plugin-persist 插件来自动持久化 Pinia 状态。持久化可以通过 localStorage、sessionStorage、IndexedDB 或服务器端数据库等方式实现。


http://www.mrgr.cn/news/54696.html

相关文章:

  • Redis 常用指令详解
  • 速盾:直播cdn加速原理是什么?
  • 2024 Rust现代实用教程:1.1Rust简介与安装更新
  • python 基础笔记(其实有点内容的)
  • CSS3 提示框带边角popover
  • 实验报告3-数据库框架实现数据操作1
  • 若依前后端分离超详情版
  • 跟《经济学人》学英文:2024年10月19日这期 Why Microsoft Excel won’t die
  • “富爸爸”教你寻找赚钱商机,我推荐你读这4本书
  • 【笔记】【YOLOv10图像识别】自动识别图片、视频、摄像头、电脑桌面中的花朵学习踩坑
  • 矩阵matrix
  • 【OD】【E卷】【真题】【100分】分苹果(PythonJavaJavaScriptC++C)
  • JavaWeb 24.Vue3的简介和快速体验
  • ssh 秘钥登录如何防止中间人攻击
  • 试了那么多内网穿透,还是神卓互联最稳定
  • 【An】Animate 2024 for【Mac】 An动画设计制作软件 安装教程——保姆级教程
  • python实战项目44:某眼电影字体反爬
  • Nginx安装于环境配置
  • 1024-过去一年的总结
  • 【JS】双指针法获得满足三数之和且不重复的三元组
  • 一文讲清楚 OAuth 2.0 支持的四个授权流程
  • 1024程序员节 | 一个机械专业的牛马转行牛码的经历
  • STM32重拾+找工作MD
  • Java 多线程(四)—— 线程安全 与 volatile 与 单例模式
  • JavaScript中实现十进制转二进制算法
  • 项目模块五:poller模块