news 2026/6/10 18:17:22

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/6/10 15:11:28

LobeChat神马搜索移动适配建议

LobeChat 与神马搜索的移动端融合&#xff1a;打造“即搜即聊”的智能交互新范式 在移动互联网进入存量竞争的时代&#xff0c;用户对信息获取效率的要求已从“快”转向“准”和“懂我”。传统的关键词匹配式搜索虽然成熟&#xff0c;但在面对复杂意图、多轮追问或需要综合判断…

作者头像 李华
网站建设 2026/6/9 18:34:47

基于AT89C51单片机的多功能遥控器设计

基于AT89C51单片机的多功能遥控器设计 第一章 系统概述 传统遥控器多为单一设备专用&#xff0c;存在功能局限、按键冗余、兼容性差等问题&#xff0c;难以满足现代家庭多设备控制的需求。基于AT89C51单片机的多功能遥控器&#xff0c;以高性价比的AT89C51为控制核心&#xff0…

作者头像 李华
网站建设 2026/6/10 16:48:30

LobeChat本地部署避坑指南:常见问题及解决方案汇总

LobeChat本地部署避坑指南&#xff1a;常见问题及解决方案汇总 在AI应用加速落地的今天&#xff0c;越来越多开发者和企业希望构建一个既能保护数据隐私、又具备强大交互能力的私有化聊天系统。然而&#xff0c;当面对OpenAI等闭源平台时&#xff0c;数据出境风险、高昂调用成本…

作者头像 李华
网站建设 2026/6/10 16:56:28

基于单片机太阳能热水器自动控制系统

基于单片机太阳能热水器自动控制系统 一、系统总体设计 太阳能热水器自动控制系统以“节能高效、精准调控、稳定可靠”为核心目标&#xff0c;面向家庭及小型商用场景&#xff0c;解决传统太阳能热水器依赖人工操作、水温水位控制不准、能源利用率低等问题。系统采用分层架构设…

作者头像 李华
网站建设 2026/6/10 2:26:54

AI 与 C4D 共生:渲染效率优化、建模精度瓶颈及行业演进路径

一、C4D 的不可替代性&#xff1a;细分赛道的效率核心​C4D 的核心价值在于易用性与场景适配的平衡。相较于 Maya 的长周期动画特效、3ds Max 的建筑工业领域&#xff0c;其以简洁界面、低学习门槛及 AE 协同优势&#xff0c;成为栏目包装、电商视觉等快速出效果场景的 “效率利…

作者头像 李华