news 2026/4/17 21:02:54

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/4/18 8:09:37

基于单片机的智能小区安防系统

基于单片机的智能小区安防系统设计 一、系统总体设计 基于单片机的智能小区安防系统以“全域监测、快速响应、联动防控”为核心目标&#xff0c;整合出入口管理、公共区域监测、住户防护等功能&#xff0c;解决传统小区安防分散、响应滞后的问题。系统采用分布式架构&#xff0…

作者头像 李华
网站建设 2026/4/18 7:05:14

LobeChat企业文化宣传内容生成

LobeChat&#xff1a;构建企业级AI助手的技术实践 在大语言模型&#xff08;LLM&#xff09;能力飞速发展的今天&#xff0c;越来越多的企业开始尝试将GPT、Llama、通义千问等先进模型引入业务流程。然而现实往往不如预期——尽管底层模型“能说会道”&#xff0c;但直接暴露AP…

作者头像 李华
网站建设 2026/4/18 7:57:04

C#属性访问器Set与Get详解

属性 Set 和 Get 访问器总结 一、核心概念对比 概念定义作用访问权限示例字段private string name;存储数据通常私有private int age;属性public string Name { get; set; }访问数据通常公有public int Age { get; set; } 二、属性的三种写法 1. 完整写法&#xff08;原始写…

作者头像 李华
网站建设 2026/4/18 8:20:56

我靠?!程序员这样使用AI才对!!!

放假前最后一个工作日下午5点&#xff0c;你鼠标都摸好了&#xff0c;就等着准点开溜。产品经理走过来了&#xff1a;“有个小需求&#xff0c;用户列表加个筛选和排序&#xff0c;很简单&#xff01;老板说客户明天就要看。”你嘴上说着好的&#xff0c;心里已经演完了八百集血…

作者头像 李华
网站建设 2026/4/17 14:07:20

学习速度 =(理解深度 × 迁移能力)÷ 无效时间。 减少无效消耗,让大脑走“高速路” (稳定的高能状态 + 清晰的内部结构 + 即时的行动回路)

学习慢&#xff0c;不是大脑慢&#xff0c;是路烂。 修路靠结构和使用&#xff0c;不靠天赋。路是一种结构化&#xff0c;构建平坦结构&#xff0c;减少干扰与摩擦。 看了不做 → 路不修 学了不用 → 路荒废 允许“半懂就用”&#xff0c;马上就用。不要卡在完美主义。一句话总…

作者头像 李华
网站建设 2026/4/18 5:21:19

4、Linux网络硬件配置全解析

Linux网络硬件配置全解析 1. 网络硬件基础概念 在Linux系统中,要理解网络硬件的工作原理,首先得了解几个关键概念:物理设备、设备驱动和接口。 - 物理设备 :像以太网、FDDI或令牌环网卡这类硬件,是插在PC插槽里、布满各种小芯片的电路板,这就是所谓的物理设备。 - …

作者头像 李华