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

三、Vue3中使用Pinia修改State的方法

修改Pinia仓库的值有5种方式

src/store/index.ts

import { defineStore } from 'pinia';
import { Names } from './store-name';
export const useTestStore = defineStore(Names.Test, {state:()=>{return {current:1111,name: '小满111'}},getters:{ // 类似computed计算属性 同样有缓存的},actions:{ // 类似 methods方法 可以做同步、异步操作 提交state}
});

第一种修改State的方式

<template><div>pinia: {{ Test.current }} --- {{ Test.name }}<button @click="change">change</button></div>
</template>
<script setup lang="ts">
import  {useTestStore} from './store';
const Test = useTestStore();
// 第一种修改State的方式
const change = () => {Test.current++
}
</script>
<style scoped>
</style>

第二种修改State的方式

<template><div>pinia: {{ Test.current }} --- {{ Test.name }}<button @click="change">change</button></div>
</template>
<script setup lang="ts">import  {useTestStore} from './store';const Test = useTestStore();// 第二种修改State的方式 批量修改对象属性
const change = () => {Test.$patch({current: 999,name: '李四'})
}
</script>
<style scoped>
</style>

第三种修改State的方式

<template><div>pinia: {{ Test.current }} --- {{ Test.name }}<button @click="change">change</button></div>
</template>
<script setup lang="ts">
import  {useTestStore} from './store';
const Test = useTestStore();
// 第三种修改State的方式 向$patch中传入工厂函数 可以写逻辑
const change = () => {Test.$patch((state) => { if(state.current>1113){state.current--;state.name = '罗翔老师';} else {state.current++;state.name = '罗永浩老师';}})
}
</script>
<style scoped>
</style>

第四种修改State的方式

<template><div>pinia: {{ Test.current }} --- {{ Test.name }}<button @click="change">change</button></div>
</template>
<script setup lang="ts">
import  {useTestStore} from './store';
const Test = useTestStore();
// 第四种修改State的方式 覆盖这个state对象
const change = () => {Test.$state = {current: 1024,name: '罗城将军'}
}
</script>
<style scoped>
</style>

第五种修改State的方式

调用actions里面的方式

在 src/store/index.ts 里面的actions里面写个方法

import { defineStore } from 'pinia';
import { Names } from './store-name';
export const useTestStore = defineStore(Names.Test, {state:()=>{return {current:1111,name: '小满111'}},getters:{ // 类似computed计算属性 同样有缓存的},actions:{ // 类似 methods方法 可以做同步、异步操作 提交statesetCurrent(num:number){ // 注意此处不要写箭头函数,否则this指向就不对了this.current = num;}}
});

再在组件里面调用

<template><div>pinia: {{ Test.current }} --- {{ Test.name }}<button @click="change">change</button></div>
</template>
<script setup lang="ts">
import  {useTestStore} from './store';
const Test = useTestStore();
// 第五种 
const change = () => {Test.setCurrent(5173);  // 直接调用setCurrent函数
}
</script>
<style scoped>
</style>

相关文章:

  • bzero和memset的区别
  • Spring-Security前后端分离权限认证
  • Android 基本属性绘制文本对象FontMetrics
  • 小程序怎么获取textarea的值?
  • 算法通关村第十六关青铜挑战——原来滑动窗口如此简单!
  • 【C++】一维字符数组 与 二维字符数组
  • Jenkins CICD过程常见异常
  • mysql核心知识整理
  • 11.14 知识总结(视图层、模层板)
  • 【备忘】ChromeDriver 官方下载地址 Selenium,pyppetter依赖
  • mysql-数据库三范式是什么、mysql有哪些索引类型,分别有什么作用 、 事务的特性和隔离级别
  • 基于springboot实现社区疫情防控平台管理系统项目【项目源码】
  • 汽车操纵稳定性matlab仿真
  • YOLO改进系列之注意力机制(CloAttention模型介绍)
  • JAVA基础9:Debug
  • __proto__ 和 prototype的关系
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 2019.2.20 c++ 知识梳理
  • Android Studio:GIT提交项目到远程仓库
  • const let
  • Git的一些常用操作
  • interface和setter,getter
  • java中的hashCode
  • Linux链接文件
  • MQ框架的比较
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Python3爬取英雄联盟英雄皮肤大图
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • swift基础之_对象 实例方法 对象方法。
  • 动态魔术使用DBMS_SQL
  • 跨域
  • 聊聊hikari连接池的leakDetectionThreshold
  • 前嗅ForeSpider教程:创建模板
  • 人脸识别最新开发经验demo
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 学习JavaScript数据结构与算法 — 树
  • 原生js练习题---第五课
  • ionic异常记录
  • NLPIR智能语义技术让大数据挖掘更简单
  • #DBA杂记1
  • #QT(TCP网络编程-服务端)
  • #Z2294. 打印树的直径
  • $.proxy和$.extend
  • (003)SlickEdit Unity的补全
  • (70min)字节暑假实习二面(已挂)
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇