vue3状态管理工具 pinia的使用

pinia 是一个轻量级的状态管理库,属于 vue3 生态圈新的成员之一,也可以把它看做 vuex5,同时支持 vue2 和 vue3,模块化的设计让它的结构十分地清晰明了
安装

npm install pinia --save

引入
在 main.ts中引入

import { createApp } from 'vue'
import { createPinia } from 'pinia'//引入pinia
​
const app = createApp(App)
app.use(createPinia())

使用方法1
例子:在src/stores下新建一个myStore.ts文件

//myStore.ts
import { defineStore } from 'pinia'//
//使用defineStore()来定义一个 store
//注意:defineStore中的第一个参数需要在你整个应用当中保持唯一。
//myStore是定义的store的id名是唯一的
//useStore为store暴露出去供引入使用的名字
export const useStore = defineStore('myStore', {state: () => {return {count: 0}},getters: {count() {return this.count}},actions: {increment() {this.count++}}
})

注意:defineStore中的第一个参数需要在你整个应用当中保持唯一
这种写法和我们之前使用的 vuex 简直一模一样,区别就是 pinia 将mutations方法取消了更方便我们使用。

使用方法2:下面是Vue3 的 setup 语法的写法 更简单方便

import { defineStore } from 'pinia'
​
export const useStore= defineStore('myStore', () => {const count = ref(0)function increment() {count.value++}
​   //返回需要暴露的属性和方法return { count, increment }
})

页面中使用

<script lang="ts" setup>import { useStore } from '@/stores/myStore'
​const counter = useStore()function myFun(){//counter.count = 1//这里可以直接修改数据//counter.$patch((state)=>{//如果state数据多可以使用$patch方法批量修改数据//state.count = 200//})counter.increment()//使用定义的方法修改数据的值,可以传参数}
</script>
<template><p>直接使用:{{counter.count}}</p><div @click="myFun">{{ counter.count }}</div>
</template>

最后:如果state中定义的数据有多个,可以使用storeToRefs解构赋值

const counter = useStore()
const { count } = counter//这里直接解构赋值
​function myFun(){counter.increment()
}
<div @click="myFun">{{ count }}</div> //这里可以正常显示数据,调用方法无法修改状态值

注意:使用上述直接解构赋值,数据可以正常显示但是点击myFun方法 count 的值不会变化,只会维持它的初始值不变,普通的解构是被禁止使用必须使用storeToRefs方法来实现

import { storeToRefs } from 'pinia'//引入方法storeToRefs
const counter = useStore()
const { count } = storeToRefs(counter)//这里使用storeToRefs解构赋值
​function myFun(){counter.increment()
}
<div @click="myFun">{{ count }}</div> //可以正常使用功能,调用方法可以修改状态值

vue3状态管理工具 pinia的使用相关推荐

  1. vue3 状态管理工具 pinia 使用

    1.安装pinia npm install pinia --save 2.创建 Store 新建一个 store 文件,创建 index.ts import { createPinia } from ...

  2. Vue新一代状态管理工具—Pinia—都2023年了,快学起来吧!

    Pinia 基本介绍 Pinia 是 Vue.js 的轻量级状态管理库 官方网站:https://pinia.vuejs.org/ 中文文档: https://pinia.web3doc.top/in ...

  3. Vue最新状态管理工具Pinia——彻底搞懂Pinia是什么

    Pinia从了解到实际运用--彻底搞懂什么是Pinia 知识回调(不懂就看这儿!) 场景复现 什么是pinia pinia相比vuex的优势 为什么要使用pinia? 基本示例 知识回调(不懂就看这儿 ...

  4. vue3状态管理模式 Pinia

    状态管理库 Pinia是Vue的专属状态管理库,它允许你跨组件或页面共享状态 1:安装与使用pinia 1.1 安装语法:npm install pinia 1.2 创建一个pinia(根存储)并将其 ...

  5. 全新的 Vue3 状态管理工具:Pinia

    大家好,我是若川.最近组织了源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列> ...

  6. Vue3状态管理库——Pinia

    什么是 Pinia Pinia (西班牙语中的菠萝),本质上依然是一个状态管理的库,用于跨组件.页面进行状态共享. pinia 与 vuex 的区别: 更友好的TypeScript支持,Vuex之前对 ...

  7. 在vue项目中引用vuex状态管理工具

    在vue项目中引用vuex状态管理工具 一.vuex是什么? 二.使用步骤 1.引入库 2.在main.js文件引入配置 3.配置store/index.js文件 4.获取state数据 5.获取ge ...

  8. [译] ⚛ React 状态管理工具博物馆

    原文地址:⚛ The React State Museum: ⚡️View the hottest state management libs for React 原文作者:Gant Laborde ...

  9. 可能是基于 Hooks 和 Typescript 最好的状态管理工具

    接上一篇:我理想中的状态管理工具 之前说,对于我个人来而言,理想的状态管理工具只需同时满足两个特点: 简单易用,并且适合中大型项目 完美地支持 Typescript 未能找到一个完美满足这两点的,所以 ...

最新文章

  1. scipy 图像处理-深度学习
  2. Mozilla 宣布引入二步认证
  3. 什么是 PureMVC 框架(提供下载)
  4. mysql-5.5.31主从复制
  5. 看《Linux入门讲座》随记
  6. unity案例 mysql lua_通过Xlua实现unity热更新的一个小例子
  7. 【原创】RPM安装软件时解决依赖性问题(自动解决依赖型)
  8. Leetcode796.Rotate String旋转字符串
  9. 大数据技术原理与应用(最后三天备考!!!)
  10. Unity项目捏脸解决方案BlendShape
  11. docker运行jenkins挂掉_使用Jenkins在Kubernetes上设置CI/CD管道
  12. git入门-----远程操作相关命令(remote 、push、fetch 、pull)
  13. 不敢相信,技术栈,居然被P站秒了
  14. linux----创建主分区、扩展分区、在扩展分区上建立逻辑分区。
  15. Intellij IDEA 将.java文件识别成文本文档
  16. 什么是附近推?附近推怎么投放?
  17. 数据驱动的营销方式和加拿大禁止Clearview AI
  18. java聚合函数_count()聚合函数正确用法
  19. 软件测试师具备的素质_软件测试工程师的所需要的职业素养是什么?
  20. 如何把音频转换成文本?不妨来试一下这三种方法吧

热门文章

  1. Error creating bean with name 'sqlSessionFactory' defined in URL
  2. cpu压测神器:cpuburn深度指南
  3. Linux·内核编译错误
  4. Java里模糊查询的英文_MyBatis实现模糊查询的几种方式
  5. 程序员给小孩取的名字
  6. openlayers画虚线 (十四)
  7. 申报倒计时|武汉东湖高新区促进外资企业投资发展专项资金最后6天
  8. WELCOME THE NEW GAY
  9. android 驾考宝典,驾考宝典安卓版
  10. linux 服务器配置