vue3中关于pinia及其持久化插件的使用
pinia是一个vue中的插件,功能是一个仓库,用来存放数据。当我们的数据在多个组件中都需要用到的时候,如果一个个向后端获取就会很麻烦。数据获取一次存放在pinia仓库中,用起来就会非常方便还减轻服务器压力。pinia官网:https://pinia.vuejs.org/zh/ ,也可以在vue的生态系统导航里面找到。pinia的安装和具体使用可以在官网指南找到,下面简单演示一下怎么使用(在vue3项目中)。
首先在项目中下载安装pinia,也可以创建项目的时候就选择安装,下载安装指令的pnpm如下
pnpm add pinia
下载好之后就在项目的main.js文件中导入创建pinia的函数,然后使用vue的use函数使用创建的pinia实例,代码演示如下
import { createApp } from 'vue' import { createPinia } from 'pinia' import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' import App from './App.vue' import router from './router' const app = createApp(App) app.use(createPinia().use(piniaPluginPersistedstate)) app.use(router) app.mount('#app')
以上就是pinia简单使用,但pinia创建的仓库在我们关闭页面的时候就销毁了,生命周期相当于一次session,会话结束就销毁。如果我们需要本地持久化,那么就可以下载pinia的持久化插件。下面介绍一下pinia持久化插件的使用,使用流程和pinia差不多,导入然后使用插件,使用pinia本地持久化如上,导入命令如下。
插件官网:https://prazdevs.github.io/pinia-plugin-persistedstate/guide/config.html
pnpm i pinia-plugin-persistedstate
这样我们就可以在项目中使用pinia和它的持久化插件,下面看一下如何创建一个pinia仓库,首先我们在项目的src下面创建一个存放仓库的目录,在目录下面创建一个个仓库,仓库代码如下
import { ref } from 'vue' import { defineStore } from 'pinia' export const useMusicStore = defineStore('musicStore', () => { //当前歌曲索引 const currentIndex = ref(0) //添加歌曲 const addSong = (song)=>{ songs.value.push(song) currentIndex.value = songs.value.length - 1 } return { currentIndex, addSong } },{ //将播放的歌曲列表本地持久化 persist: { enabled: true, strategies: [ { paths: ["songs"], storage: localStorage, }, ], }, })