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

Vue3-47-Pinia-修改全局状态变量值的方式

说明

修改全局状态变量的值,是一个比较常规而且常见的操作。
本文就介绍四种常见的操作。
由于Option StoreSetup Store 在修改的时候略有不同,所以本文也会将不同点体现一下。

全局状态变量的定义

包含了 Option StoreSetup Store 两种定义方式;
在下面的修改操作中会根据这两种不同的定义来分别阐述。

// 导入 defineStore API
import { defineStore } from 'pinia'// 导入 reactive 依赖
import { reactive } from 'vue'// 定义全局状态方式一 : option store
export const useClassStore = defineStore('classinfo',{state: () => ({name:'快乐篮球二班',studentNum:30}),actions:{// 用来更新状态的值updateName(){this.name = '使用actions修改的name'}}})// 定义全局状态方式二 : setup store
export const useStudentStore = defineStore('studentinfo',() => {// 响应式状态const student =  reactive({name : '小明',age:12,className:'快乐足球一班'})// 直接定义一个方法进行数据属性的修改const updateName = (nameP:string)=>{student.name = nameP}return { student,updateName }})

方式一 : 直接修改

直接修改 : 就是直接读取对象进行变量值的替换。

Option Store

	// 导入全局状态变量的定义import  { useClassStore }  from './storea'// 获取全局状态变量的对象const classStore = useClassStore()// 方式一 : 直接修改classStore.studentNum = 36

Setup Store

	// 导入全局状态变量的定义import  { useStudentStore }  from './storea'// 获取全局状态变量的对象const studentStore = useStudentStore()// 方式一 : 直接修改studentStore.student.className = '我也不知道是哪个班的'

方式二 :$patch 方式修改

参数是一个对象的形式

Option Store

直接放入 【参数对象】 : {key:value} 就OK了

	// 导入全局状态变量的定义import  { useClassStore }  from './storea'// 获取全局状态变量的对象const classStore = useClassStore()// 方式二 : $patch 方法修改classStore.$patch({studentNum:20})

Setup Store

由于 状态变量在定义的时候,就是一个响应式对象,所以需要把整个的对象都放进去才OK。

	// 导入全局状态变量的定义import  { useStudentStore }  from './storea'// 获取全局状态变量的对象const studentStore = useStudentStore()// 方式二 : $patch 方法修改studentStore.$patch({student:{name: studentStore.student.name,age: studentStore.student.age,className:'又换了一个班级'}})

方式三 : $patch 带参数的方式修改

参数是 函数的形式,且函数的参数就是 原state对象
这种方式用起来比【方式二】要更加灵活。

Option Store

	// 导入全局状态变量的定义import  { useClassStore }  from './storea'// 获取全局状态变量的对象const classStore = useClassStore()// 方式三 :$patch + 函数参数的方法修改 : 函数的参数就是 状态对象classStore.$patch((state)=>{console.log(state)state.studentNum = 100})

Setup Store

	// 导入全局状态变量的定义import  { useStudentStore }  from './storea'// 获取全局状态变量的对象const studentStore = useStudentStore()// 方式三 :$patch + 函数参数的方法修改 : 函数的参数就是 状态对象studentStore.$patch((state)=>{console.log(state)state.student.className = '超级无敌快乐踢足球的班'})

方式四 :actions方法的方式进行修改

这种方式比较好理解,就是通过调用已经定义好的方法的方式来进行变量值的修改。
也比较推荐使用这一种方式。

Option Store

	// 导入全局状态变量的定义import  { useClassStore }  from './storea'// 获取全局状态变量的对象const classStore = useClassStore()// 方式四 :actions 方法的方式进行数据的修改classStore.updateName()

Setup Store

	// 导入全局状态变量的定义import  { useStudentStore }  from './storea'// 获取全局状态变量的对象const studentStore = useStudentStore()// 方式四 :actions 方法的方式进行数据的修改studentStore.updateName('小红')
http://www.lryc.cn/news/280853.html

相关文章:

  • 【Scala】——面向对象
  • 【MediaFoundation】OpenCV VideoCapture 读取音频源码
  • 2024秋招,百度测试开发工程师一面
  • Git 使用与问题记录 二(公司快速上手版)
  • 【C语言小游戏】贪吃蛇
  • 价值7500的在线授权网站源码支持IP+域名+双向授权全开源
  • haiku实现门控多头注意力模块
  • 【React 常用的 TS 类型】持续更新
  • 打破传统边界,VR技术与六西格玛设计理念的创新融合!
  • [uniapp] uni-ui+vue3.2小程序评论列表组件 回复评论 点赞和删除
  • TongLINKQ(3):TongLINKQ常用命令
  • 抽水马桶出水慢解决记录
  • img标签的奇怪问题
  • 深入探究Hibernate:优雅、强大的Java持久化框架
  • JavaScript高级特性详解
  • 网站建设网络设计营销类网站eyouCMS模板(PC+WAP)
  • 迅为RK3568开发板Android11/12/Linux编译驱动到内核
  • SaaS 应用深度解析:Marketo
  • 闲聊篇-求职的点点滴滴~~
  • 微软最新研究成果:使用GPT-4合成数据来训练AI模型,实现SOTA!
  • 爬虫案例—抓取小米商店应用
  • geemap学习笔记047:边缘检测
  • 《Git学习笔记:IDEA整合Git》
  • Scipy 高级教程——统计学
  • 《向量数据库指南》RAG 应用中的指代消解——解决方案初探
  • CSS 一行三列布局,可换行(含grid网格布局、flex弹性布局/inline-block布局 + 伪类选择器)
  • class_3:lambda表达式
  • Hadoop 实战 | 词频统计WordCount
  • SpringCloud.04.熔断器Hystrix( Spring Cloud Alibaba 熔断(Sentinel))
  • python 八大排序_python-打基础-八大排序