VUE 全家桶之 Pinia
概念
Pinia 是一个用于 Vue 的状态管理库,类似 Vuex, 是 Vue 的另一种状态管理方案
一、使用步骤:
- 安装:
js
yarn add pinia@next
- 创建一个 pinia(根存储)并将其传递给应用程序:
js
import { createPinia } from 'pinia'
app.use(createPinia())
- 核心概念与基本使用:
1. Store:
js
// ============ Store 定义 =============
// store.ts
import { defineStore } from 'pinia'
// defineStore 调用后返回一个函数,调用该函数获得 Store 实体
export const useStore = defineStore({
// id: 必须的,在所有 Store 中唯一
id: "myGlobalState",
// state: 返回对象的函数
state: () => ({
counter: 0
}),
......
})
html
<!-- ============ Store 使用 ============= -->
<script lang="ts" setup>
// 导入 Store, 使用自己的路径
import { useStore } from '@/store/store'
import { storeToRefs } from 'pinia'
// 调用函数 获得Store
const store = useStore()
// state解构:storeToRefs
const { counter } = storeToRefs(store)
</script>
2. Getters:
js
// ============ Getters =============
// Todo
3. actions:
作用:修改state / 异步 actionaction 间的相互调用直接用 this 访问即可。
js
// ============ actions =============
actions: {
async login(account, pwd) {
const { data } = await api.login(account, pwd)
return data
},
......
}
- 常用插件: 数据持久化: pinia-plugin-persist,用于页面刷新后数据依然能保持。
js
// ============ pinia-plugin-persist =============
// 安装
yarn add pinia-plugin-persist
// 使用
import { createPinia } from 'pinia'
import piniaPluginPersist from 'pinia-plugin-persist'
const store = createPinia()
store.use(piniaPluginPersist) // 注意这里是store.use,而不是app.use
// 具体代码
actions: {......},
// 开启缓存
persist: {
enabled: true,
// 自定义 key
strategies: [
{
key: 'my_user',
storage: localStorage,
},
{
// 持久化部分 state
// 默认所有 state 都会进行缓存,你可以通过 paths 指定要持久化的字段,其他的则不会进行持久化。
// 未指定 key 的话,则直接存到当前store的名下
storage: localStorage,
paths: ['name']
},
{
// 未指定 storage,则缓存到 Session Storage里面
key: 'Counter'
}
]
}
二、Pinia 源码简析:
相关文章:
Pinia 快速入门
Pinia(皮尼亚)源码分析
Pinia.js 上手指南
拥抱 pinia,快速上手,详解指南