vue3 使用 pinia 并持久化存储数据
1. 官方文档
pinia官方文档地址
pinia-plugin-persistedstate数据持久化插件
2. 安装
yarn add pinia # 或者使用 npm npm install pinia
3. 使用
main.js 中添加如下代码:
import { createApp } from "vue"; import App from "./App.vue"; import { createPinia } from "pinia"; import piniaPluginPersistedstate from "pinia-plugin-persistedstate";// 持久化插件 const app = createApp(App); const pinia = createPinia(); pinia.use(piniaPluginPersistedstate); app.use(pinia); app.mount("#app");
src 目录创建 stores 文件夹,新建 mainStore.js 文件:
import { defineStore } from 'pinia' // useStore 可以是 useUser、useCart 之类的任何东西 // 第一个参数是应用程序中 store 的唯一 id export const useStore = defineStore('main', { // 开启数据持久化 persist: { storage: sessionStorage, }, // 推荐使用 完整类型推断的箭头函数 state: () => { return { // 所有这些属性都将自动推断其类型 counter: 0, name: 'Eduardo', isAdmin: true, } }, getters: { doubleCount: (state) => state.counter * 2, }, actions: { increment() { this.counter++ }, randomizeCounter() { this.counter = Math.round(100 * Math.random()) }, }, })
在其他文件中引入并使用:
<script setup> import { useStore } from "@/stores/mainStore"; const mainStore = useStore(); mainStore.increment(); console.log(mainStore.counter); </script>
注意事项:
- store 是一个用reactive 包裹的对象,这意味着不需要在getter 之后写.value,但是,就像setup 中的props 一样,我们不能对其进行解构;
- 为了从 Store 中提取属性同时保持其响应式,您需要使用storeToRefs()。 它将为任何响应式属性创建 refs。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本