Vue3-46-Pinia-获取全局状态变量的方式

使用说明

在 Pinia 中,获取状态变量的方式非常的简单 : 就和使用对象一样。
使用思路 : 1、导入Store;2、声明Store对象;3、使用对象。

在逻辑代码中使用

但是 Option StoreSetup Store 两种方式定义的全局状态变量在获取的时候还是有简单的区别的:
Option Store : 声明Store对象之后,可以直接使用属性,例如 : 【store.name】
Setup Store : 声明Store对象之后,可以获取到定义的声明式对象,所以使用具体属性时需要通过 该对象,例如 : 【store.student.name】

在html模板中使用

此处非常的简单,Store对象中有一个$state 属性,这个属性就是我们定义的全局状态变量。

下面通过具体的案例体会一下。

具体案例

本案例 有一个全局状态变量的 配置文件,分别通过 Option StoreSetup Store 两种方式定义了两个全局状态变量;
在组件A 中 导入两个全局状态变量,并分别在控制台 和 页面模板中读取展示一下;
在 App.vue 文件中 存在 <router-view> 标签用于组件的路由。

全局状态变量配置文件

// 导入 defineStore API
import { defineStore } from 'pinia'// 导入 reactive 依赖
import { reactive } from 'vue'// 定义全局状态方式一 : option store
export const useClassStore = defineStore('classinfo',{state: () => ({name:'快乐篮球二班',studentNum:30})})// 定义全局状态方式二 : setup store
export const useStudentStore = defineStore('studentinfo',() => {// 响应式状态 : student 是响应式对象const student =  reactive({name : '小明',age:12,className:'快乐足球一班'})return { student }})

App.vue 组件

<template><div class="basediv">APP.vue 中的 msg : {{ msg }}<br><br><!-- 组件放在这里 --><router-view></router-view></div></template><script setup lang="ts">// 引入 provide 方法import { ref } from 'vue'// 声明父组件的一个变量const msg = ref('这是App根组件的msg变量')</script><style scoped>.basediv{width: 600px;height: 400px;border: 1px solid red;}
</style>

组件A 的代码

<template><div class="diva">这是组件A<br><br><!-- 使用 $state 来读取全局状态变量 -->classStore : {{ classStore.$state }}<br>studentStore :  {{ studentStore.$state }}</div></template><script setup lang="ts">// 导入全局状态变量的定义import  { useClassStore,useStudentStore }  from './storea'// 获取全局状态变量的对象const classStore = useClassStore()const studentStore = useStudentStore()// 读取一下全局的变量console.log('组件A 中 : ',classStore)console.log('组件A 中 : ',studentStore)// Option Store 的方式 : 直接可以获取到属性console.log('组件A 中 classinfo 对象 : ',classStore.name+' - '+classStore.studentNum)// Setup Store 的方式 : 仍然需要通过 定义的 student 对象,因为这个student 是真正的全局状态对象console.log('组件A 中 studentinfo 数据对象: ',studentStore.student.name+'-'+studentStore.student.age+'-'+studentStore.student.className)console.log('------')</script><style scoped>.diva{width: 450px;height: 250px;background: red;}
</style>

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/338035.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件架构之事件驱动架构

一、定义 事件驱动的架构是围绕事件的发布、捕获、处理和存储&#xff08;或持久化&#xff09;而构建的集成模型。 某个应用或服务执行一项操作或经历另一个应用或服务可能想知道的更改时&#xff0c;就会发布一个事件&#xff08;也就是对该操作或更改的记录&#xff09;&am…

Javaweb之SpringBootWeb案例的详细解析

SpringBootWeb案例 前面我们已经讲解了Web前端开发的基础知识&#xff0c;也讲解了Web后端开发的基础(HTTP协议、请求响应)&#xff0c;并且也讲解了数据库MySQL&#xff0c;以及通过Mybatis框架如何来完成数据库的基本操作。 那接下来&#xff0c;我们就通过一个案例&#xf…

Linux驱动学习—输入子系统

1、什么是输入子系统&#xff1f; 输入子系统是Linux专门做的一套框架来处理输入事件的&#xff0c;像鼠标&#xff0c;键盘&#xff0c;触摸屏这些都是输入设备&#xff0c;但是这邪恶输入设备的类型又都不是一样的&#xff0c;所以为了统一这些输入设备驱动标准应运而生的。…

在IntelliJ IDEA上使用通义灵码(TONGYI Lingma)

参考链接&#xff1a; 通义灵码产品介绍_智能编码助手_AI编程_云效(Apsara Devops)-阿里云帮助中心 【IDEA如何使用通义灵码&#xff1f;】_idea 通义灵码-CSDN博客 1. 简介 1.1 定义 通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提…

缓存代理服务器

一、代理的工作机制 1、代替客户机向网站请求数据&#xff0c;从而可以隐藏用户的直实IP地址 2、将获得的网页数据(静态 web 元素) 保存到缓存中并发送给客户机&#xff0c;以便下次请求相同的数据时快速响应 二、代理服务器的概念及其作用 代理服务器是一个位于客户端和原…

vue3引用类型和基础类型深度克隆

深度克隆失效的一个例子 import { cloneDeep } from "lodash"; import { ref } from "vue";const navArr ref(["recommend","hot","new", ]) const list1: any ref([]) const list2: any ref([]) const list3: any ref(…

强化学习求解TSP(三):Qlearning求解旅行商问题TSP(提供Python代码)

一、Qlearning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于奖励的决策问题。它是一种无模型的学习方法&#xff0c;通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策&#xff0c;该函数表示在给定状态下采取某个动作所获…

【Spring 篇】注解之舞:Spring AOP的优雅表演

欢迎来到Spring的代码舞台&#xff0c;在这里&#xff0c;我们将沉浸在一场注解之舞的盛宴中。今天我们将探讨如何使用注解方式实现Spring AOP&#xff0c;一种优雅而富有表现力的编程技术。 AOP的魅力 在编程的舞台上&#xff0c;AOP&#xff08;Aspect-Oriented Programmin…

CMU15-445-Spring-2023-Project #2 - 前置知识(lec07-010)

Lecture #07_ Hash Tables Data Structures Hash Table 哈希表将键映射到值。它提供平均 O (1) 的操作复杂度&#xff08;最坏情况下为 O (n)&#xff09;和 O (n) 的存储复杂度。 由两部分组成&#xff1a; Hash Function和Hashing Scheme&#xff08;发生冲突后的处理&…

[论文阅读]YOLO9000:Better,Faster,Stronger

摘要 我们引入了YOLO9000&#xff0c;一个可以检测超过9000种类别的先进的实时目标检测系统。首先我们提出了多种yolo检测方法的提升方式&#xff0c;既新颖又参考了 之前的工作。改进后的模型&#xff0c;YOLOV2在标准检测任务例如PASCAL VO 和COCO 上都取得了领先。使用一个…

每天学习一点点之 Spring Boot 1.x 升级 2.x 之 allowBeanDefinitionOverriding

最近组内大佬正在进行 Spring Boot 版本的升级&#xff0c;从 1.x 版本升级到 2.x 版本。在查看代码变更时&#xff0c;我注意到我之前编写的一个名为 ShardingRuleStrategy 的类被添加了 Primary 注解。这个类在原来的代码中被标记为 Component&#xff0c;同时也在 API 中被定…

Android开发基础(一)

Android开发基础&#xff08;一&#xff09; 本篇主要是从Android系统架构理解Android开发。 Android系统架构 Android系统的架构采用了分层的架构&#xff0c;共分为五层&#xff0c;从高到低分别是Android应用层&#xff08;System Apps&#xff09;、Android应用框架层&a…