Pinia介绍

Pinia 是一个用于 Vue 的状态管理库,类似 Vuex,是 Vue 的另一种状态管理方案。Pinia 主打简单和轻量,其大小仅有 1KB,在功能用法上主要包括 storestategetteraction 等概念。

Pinia 采用如下命令安装:

npm install pinia@next

pinia@next 版本兼容 Vue 3,其大部分 APIVuex 类似,并且结合 Vue 3 组合式 API 使用起来更加方便。

Pinia 中,可以自由地将多个 storeVuex 更推荐使用一个 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