【Vue3】状态管理工具——pinia的使用

news/2024/7/10 1:16:37 标签: vue, 前端, javascript

目录

搭建pinia环境

存储数据

组件中使用数据

修改数据

storeToRefs

$subscribe


pinia相当于vue2中的vuex,pinia也是vue.js状态管理库。

搭建pinia环境

下载

npm install pinia

创建

src/main.js

javascript">import { createApp } from 'vue'
import App from './App.vue'
 
/* 引入createPinia,用于创建pinia */
import { createPinia } from 'pinia'
 
/* 创建pinia */
const pinia = createPinia()
const app = createApp(App)
 
/* 使用插件 */
app.use(pinia)
app.mount('#app')

存储数据

它有三个概念:store、getters、actions,相当于组件中的data、computed和methods。

src/store/count.js

javascript">// 引入defineStore用于创建store
import {defineStore} from 'pinia'
 
// 定义并暴露一个store
export const useCountStore = defineStore('count',{
  // 动作
  actions:{
    increment(value) {
      this.sum += value
    }
  },
  // 状态
  state(){
    return {
      sum:6,
      a:1,
      b:2,
      c:3
    }
  },
  // 计算
  getters:{
    bigSum:(state) => state.sum *10,
  }
})

actions中可以通过this来获取到state中的数据,getters用于处理state中的数据。

组件中使用数据

javascript"><template>
  <h2>state中的数据:{{ countStore.sum }}</h2>
  <h2>getters处理的数据:{{ countStore.bigSum }}</h2>
  <button @click="add">点击加三</button>
</template>
 
<script setup name="Count">
  // 引入对应的useXxxxxStore	
  import {useCountStore} from '@/store/count'
  
  // 调用useXxxxxStore得到对应的store
  const countStore = useCountStore()
 
  const add = () => {
    //调用actions中的方法
    countStore.increment(3)
  }
</script>

修改数据

(1)直接修改

javascript">countStore.sum = 666

(2)批量修改

javascript">countStore.$patch({
  sum:999,
  a:11,
  b:22,
  c:33
})

(3)通过actions修改,然后在组件中调用actions中的方法

storeToRefs

使用storeToRefs可以将store中的数据转换成ref对象。

注意:pinia中的storeToRefs只会对数据本身转换,而vue中的toRef会转换store中的数据。

我们通过解构拿到的数据不是响应式的,所以需要使用storeToRefs将它们变成响应式的。

javascript"><template>
	<div class="count">
		<h2>当前求和为:{{sum}}</h2>
	</div>
</template>
 
<script setup lang="ts" name="Count">
  import { useCountStore } from '@/store/count'
  /* 引入storeToRefs */
  import { storeToRefs } from 'pinia'
 
	/* 得到countStore */
  const countStore = useCountStore()
  /* 使用storeToRefs转换countStore,随后解构 */
  const {sum} = storeToRefs(countStore)
</script>

$subscribe

使用$subscribe方法可以侦听store中的数据变化

javascript">countStore.$subscribe((mutate,state)=>{
  console.log(mutate, state);
})


http://www.niftyadmin.cn/n/5347462.html

相关文章

计算机设计大赛 卷积神经网络手写字符识别 - 深度学习

文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言…

有了这些小技巧,再也不会有人说你代码烂

前言 代码烂&#xff0c;其实造成这些原因的很大一部分原因是由于代码规范的问题&#xff0c;如果写的规范&#xff0c;注释好&#xff0c;其实很多问题也就解决了。所以本文我就从代码的编写规范&#xff0c;格式的优化&#xff0c;设计原则和一些常见的代码优化的技巧等方面总…

最新国内GPT4.0使用入门到精通,Midjourney绘画,GPT语音对话使用,DALL-E3文生图

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

高效构建Java应用:Maven的使用总结

一、Maven简介和快速入门 1.1 Maven介绍 Maven-Introduction Maven 是一款为 Java 项目构建管理、依赖管理的工具&#xff08;软件&#xff09;&#xff0c;使用 Maven 可以自动化构建、测试、打包和发布项目&#xff0c;大大提高了开发效率和质量。 总结&#xff1a;Maven…

电脑监控系统:企业网络安全解决方案

在当今数字化的世界里&#xff0c;企业的网络安全已经成为一项至关重要的任务。电脑监控系统作为一种有效的解决方案&#xff0c;正在被越来越多的企业所采用。 电脑监控系统是一种集成了多种安全功能的综合性解决方案&#xff0c;旨在为企业提供全面的网络安全防护。该系统能够…

leetcode hot100 全排列

在本题中&#xff0c;是要求我们求一个不重复数组的全排列&#xff0c;那么全排列&#xff0c;一定是长度和数组长度一致的&#xff0c;并且&#xff0c;排列问题是有顺序的&#xff0c;即1&#xff0c;2&#xff0c;3和1&#xff0c;3&#xff0c;2是两个不同的排列。 那么&a…

MVC架构模式与三层架构

提示&#xff1a;博客中的图片来源于动力节点在B站的视频讲解。 MVC架构模式与三层架构 一、三层架构二、MVC&#xff08;model view controller&#xff09;1.MVC 框架的工作流程&#xff08;1&#xff09;JSP Servlet javabean实现MVC。&#xff08;2&#xff09;SSM&#…

大数据数据流分析和处理的工具pig,从入门到精通!

介绍&#xff1a;Pig是一种数据流语言和运行环境&#xff0c;用于处理和分析大数据。 Pig由两个主要部分构成&#xff1a; Pig Latin语言&#xff1a;这是一种用于描述数据流的高级语言&#xff0c;它允许用户以较为简洁的方式编写数据处理和转换任务。 Pig执行环境&#xff1a…