当前位置: 首页 > news >正文

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.lryc.cn/news/280908.html

相关文章:

  • 数据库——DAY1(Linux上安装MySQL8.0.35(网络仓库安装))
  • 原生微信小程序-两次设置支付密码校验,密码设置二次确认
  • 【Python学习】Python学习15-模块
  • ARCGIS PRO SDK 设置UI控件状态:启用/禁用
  • 案例126:基于微信小程序的民大食堂用餐综合服务平台
  • cephfs 配置 mds stancd replay 操作
  • 【2023我的编程之旅】系统学习C语言easyx图形库心得体会
  • 【linux】软链接创建(linux的快捷方式创建)
  • 基于BP神经网络的光伏发电预测
  • RPA财务机器人在厦门市海沧医院财务管理流程优化汇总的应用RPA全球生态 2024-01-05 17:27 发表于河北
  • 应用在LCD显示器电源插头里的氮化镓(GaN)MTC-65W1C
  • Vue新手村(二)
  • Mysql-redoLog
  • 编程笔记 html5cssjs 039 CSS背景示例
  • 沃尔玛如何通过安全、有效的测评补单提升产品权重?
  • 「 典型安全漏洞系列 」03.跨站请求伪造CSRF详解
  • 区间合并(pair,auto的用法)
  • Java零基础教学文档第四篇:HTML_CSS_JavaScript(2)
  • 2024 年 Linux 和开源的六大趋势预测
  • 揭秘小米手机被疯狂吐槽的存储扩容技术
  • Flutter 小技巧之升级适配 Xcode15
  • 杨中科 .NETCORE 异步编程
  • Rust-函数
  • 【java八股文】之分布式系列篇
  • 【CSCV】划分数据集
  • 【面试合集】说说提高微信小程序的应用速度的手段有哪些?
  • uniapp——自定义导航栏的封装
  • Halcon机器视觉和运动控制软件通用框架,24年1月最新版新增UI设计器,插件式开发,开箱即用 仅供学习!
  • WebGL简介以及使用
  • 导轨式信号隔离变送器比例阀门线性驱动器4-20mA/0-5V/0-10V转0-165mA/0-80mA/0-1A/0-2A/0-4A