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

Vuex 和 Pinia 的区别

API 设计

  • ​​Vuex​​:API 设计基于选项式 API,需要定义 state、mutations、actions 和 getters 等选项。
const store = new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++}},actions: {asyncIncrement({ commit }) {setTimeout(() => {commit('increment')}, 1000)}},getters: {doubleCount(state) {return state.count * 2}}
})
  • ​​Pinia​​:基于组合式 API,使用 defineStore 定义 store,代码更加简洁直观。
import { defineStore } from 'pinia'export const useCounterStore = defineStore('counter', {state: () => ({count: 0}),actions: {increment() {this.count++},async incrementAsync() {await new Promise(resolve => setTimeout(resolve, 1000))this.count++}},getters: {doubleCount: (state) => state.count * 2}
})

状态修改

  • Vuex​​:状态修改必须通过 mutations 提交同步修改,异步操作在 actions 中提交 mutations。
// 在组件中使用
this.$store.commit('increment') // 同步修改
this.$store.dispatch('asyncIncrement') // 异步修改
  • Pinia​​:支持在 actions 中直接修改 state,也支持异步操作。
// 在组件中使用
const counterStore = useCounterStore()
counterStore.increment() // 直接修改状态
counterStore.incrementAsync() // 异步修改状态

类型支持

  • ​​Vuex​​:Vuex 4 对 TypeScript 有一定的支持,但类型推断相对较弱,需要手动进行一些类型声明。
  • ​​Pinia​​:专为 TypeScript 设计,具有更强大的类型推导支持,能充分利用 Vue 3 的 Composition API 的类型推断,使代码更加类型安全。
// 在 Pinia 中,TypeScript 可以自动推断出状态和获取器的类型
const counterStore = useCounterStore()
const currentCount = counterStore.count // 类型为 number
const doubleCount = counterStore.doubleCount // 类型为 number
http://www.xdnf.cn/news/137161.html

相关文章:

  • 第2讲:R语言中的色彩美学——科研图表配色指南
  • 用C语言实现——一个中缀表达式的计算器。支持用户输入和动画演示过程。
  • C语言指针5
  • Swift中Class和Struct的深度对比分析
  • VS Code搭建C/C++开发环境
  • CAD版本之——DwgVersion 与 AutoCAD 版本的对应关系
  • UOJ 228 基础数据结构练习题 Solution
  • 【Java学习笔记】冒泡排序
  • 【网工第6版】第5章 网络互联⑪
  • Python 3.14:探索新版本的魅力与革新
  • 同样机身尺寸下伺服电机比无刷电机扭矩更大的原因
  • Mybatis-Plus,IDEA2024版本
  • top 命令里面可以看到进程哪些状态?
  • 浏览器常用快捷键
  • MDF标准
  • 高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
  • 关于开源大模型(如 LLaMA、InternLM、Baichuan、DeepSeek、Qwen 等)二次开发或训练经验的关键点和概述
  • Java基础第四章、面向对象
  • 从零开始用Turtle绘制分形树,数学与编程的完美结合!
  • 声音分离人声和配乐base,vocals,drums -从头设计数字生命第6课, demucs——仙盟创梦IDE
  • element-ui tabs 组件源码分享
  • 前端技术Ajax原理
  • 32.768kHz晶振详解:作用、特性及与其他晶振的区别
  • 什么是电容?
  • IDEA搭建环境的五种方式
  • 红黑树——如何靠控制色彩实现平衡的?
  • 第3讲:ggplot2完美入门与美化细节打磨——从基础绘制到专业级润色
  • OpenHarmony之电源管理子系统公共事件定义
  • Qt知识点1『16进制数值与文本互相转换』
  • HTML基础笔记