Pinia介绍
Pinia 是一个用于 Vue 的状态管理库,类似 Vuex,是 Vue 的另一种状态管理方案。Pinia 主打简单和轻量,其大小仅有 1KB,在功能用法上主要包括 store、state、getter、action 等概念。
Pinia 采用如下命令安装:
npm install pinia@next
pinia@next 版本兼容 Vue 3,其大部分 API 和 Vuex 类似,并且结合 Vue 3 组合式 API 使用起来更加方便。
在 Pinia 中,可以自由地将多个 store(Vuex 更推荐使用一个 store)定义在不同的模块文件中,使用时直接引入这个模块即可,便于拆分管理,例如创建一个 user.js,代码如下:
// stores/user.js
import { defineStore } from 'pinia'
export const useCounterStore = defineStore('counter', {
state: () => ({count: 0}),
actions: {
increment() {
this.count++
},
},
})
使用时,直接导入这个模块,代码如下:
import { useCounterStore } from '@/stores/user'
export default {
setup() {
const counter = useCounterStore()
// 直接修改state
counter.count++
// $patch方法修改state
counter.$patch({ count: counter.count + 1 })
// 调用action
counter.increment()
},
}
在 Pinia 中,可以直接对 state 进行修改(不同于 Vuex 不推荐这么做),也可以调用 action 即通过 $patch 方法同时对多个 state 进行修改。
Pinia 符合直觉的状态管理方式,让使用者回到了模块导入导出的原始状态,使状态的来源更加清晰可见,但是目前来说 Pinia 还处于快速更新阶段,相关社区和文档还不够完善,还是不如 Vuex 使用者多,就目前来说读者可以先行了解,对于状态管理还是更加推荐 Vuex。