news 2026/8/16 10:50:26

Vue3使用pinia做全局状态管理的简单示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue3使用pinia做全局状态管理的简单示例

一、插件版本:

"pinia": "^2.0.23",

"pinia-plugin-persist": "^1.0.0",

"vue": "^3.4.27"

二、store目录

src/store/index.ts

import type { App } from 'vue'; import { createPinia } from 'pinia'; import piniaPersist from 'pinia-plugin-persist'; const store = createPinia(); store.use(piniaPersist); export function setupStore(app: App<Element>) { app.use(store); } export { store };

src/store/tableStore.ts

import { Ref, ref } from 'vue'; import { defineStore } from 'pinia'; import { store } from '@/store'; export interface ITableStoreState { tableRef: Ref; list: Map<any, any>[]; } export const tableOrgStore = defineStore({ id: 'tableOrganization', state: (): ITableStoreState => ({ tableRef: ref(), list: [], }), persist: { enabled: true, }, getters: { getList(): ITableStoreState['list'] { return this.list; }, }, actions: { setList(info: ITableStoreState['list']) { this.list = info; }, }, }); // Need to be used outside the setup export function useTableStoreWidthOut() { return tableOrgStore(store); }

三、main.ts

。。。省略。。。 // 挂载状态管理 setupStore(app); 。。。省略。。。

四、在main.ts所在项目的任意组件中使用:

import { storeToRefs } from 'pinia'; import { useTableStoreWidthOut } from '@/store/modules/tableStore'; const tableStore = useTableStoreWidthOut(); const { tableRef, getList } = storeToRefs(tableStore); // 响应式数据使用storeToRefs包裹再解构获取 const { setList } = tableStore; // function方法直接解构获取

使用tableRef示例:

<template> <button @click="handleClick">click</button> <my-list ref="tableRef" /> </template> <script lang="ts" setup> import { storeToRefs } from 'pinia'; import { useTableStoreWidthOut } from '@/store/modules/tableStore'; import MyList from './MyList.vue'; const tableStore = useTableStoreWidthOut(); const { tableRef } = storeToRefs(tableStore); // 响应式数据使用storeToRefs包裹再解构获取 const handleClick = () => { console.log('===tableRef====', tableRef); }; </script>

五、参考资料

https://pinia.vuejs.org/core-concepts/

https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/

https://cn.vuejs.org/api/application.html

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 23:02:15

基于C51单片机红绿黄交通灯的设计

基于C51单片机红绿黄交通灯的设计 第一章 系统概述 传统红绿黄交通灯多依赖固定电路控制&#xff0c;时序单一且无法灵活调整&#xff0c;难以适配不同时段车流量变化&#xff0c;易在高峰时段引发路口拥堵。基于C51单片机的红绿黄交通灯系统&#xff0c;以低成本、高可靠性的C…

作者头像 李华
网站建设 2026/8/15 0:22:54

Java开发者AI转型路线图:从CRUD到AI架构师的4种路径+实战项目(建议收藏)

文章分析了Java开发者向AI大模型领域转型的必要性、优势与路径。指出Java开发者具备工程化思维和企业级开发经验等转型优势&#xff0c;可通过渐进式路径完成技术栈过渡。文章详细介绍了需要强化的数学基础、大模型专项能力&#xff0c;以及如何将Java工程经验转化为AI项目价值…

作者头像 李华
网站建设 2026/8/15 21:12:05

网络爬虫相关操作--selenium库(超详细版)

1、在网页的搜索框输入文字from selenium import webdriver from selenium.webdriver.edge.options import Options from selenium.webdriver.common.by import By edge_optionsOptions() edge_options.binary_locationr"C:\Program Files (x86)\Microsoft\Edge\Applicati…

作者头像 李华
网站建设 2026/8/16 4:28:07

麒麟系统运行LobeChat是否流畅?实测告诉你答案

麒麟系统运行LobeChat是否流畅&#xff1f;实测告诉你答案 在信创浪潮席卷各行各业的今天&#xff0c;一个现实问题摆在开发者面前&#xff1a;我们能否在国产操作系统上顺畅地使用前沿AI工具&#xff1f;比如&#xff0c;像 LobeChat 这样现代化、功能丰富的开源聊天界面&…

作者头像 李华
网站建设 2026/8/15 8:56:05

物联网边缘设备+LobeChat分布式AI终端网络

物联网边缘设备 LobeChat&#xff1a;构建去中心化的分布式 AI 终端网络 在智能制造车间的一台巡检终端前&#xff0c;工程师对着屏幕轻声提问&#xff1a;“上一次电机温度异常是什么时候&#xff1f;可能的原因有哪些&#xff1f;”几乎瞬间&#xff0c;一个带有图表和分析建…

作者头像 李华