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

vue-pinia

Vue-Pinia

1. 基本介绍

pinia 是一个状态管理工具,Vue 的专属状态管理库,它允许你 跨组件 或⻚⾯ 共享状态

  • 不同组件数据 保持同步

  • 数据的修改都是 可追踪的

2. 基本使用

1️⃣ 下载 pinia

npm install pinia
yarn add pinia

2️⃣ 创建 pinia 实例并注册。

// main.js
import { createApp } from 'vue'
import { creaePinia } from 'pinia'
import App from './App.vue'const pinia = createPinia()
const app = createApp(App)app.use(pinia)
app.mount('#app')

3️⃣ 定义仓库,创建 src/store/name.js 模块,用来管理相应的共享数据。

import { defineStore } from 'pinia'
export const useNameStore = defineStore(arg1 , arg2)
  • 可以任意命名 defineStore() 的返回值,但建议使用 store 的名字,并以 use 开头且以 Store 结尾。

  • arg1:字符串类型,被用作 id,要求是一个独一无二的名称。

  • arg2:setup 函数或 option 对象。

    1. option对象(选项式API):

      import { defineStore } from 'pinia'
      // 定义⼀个名为 stock的store 并导出
      export const useStockStore = defineStore('stock', {// 共享数据state: () => ({stock: 20,// ...}),// 基于共享数据的计算属性getters: {// 计算库存的两倍doubleStock: (state) => state.stock * 2,// ...},// 修改共享数据的⽅法actions: {// 增加库存addStock() {this.stock++},// 减少库存subStock() {this.stock--},// ...}
      }
      
      • state:store 的数据 (data)

      • getters:store 的计算属性 (computed)

      • actions: store 的方法 (methods)

    2. setup函数(组合式API)

      import { defineStore } from 'pinia'
      import { ref, computed } from 'vue'
      // 定义⼀个名为 stock的store 并导出
      export const useStockStore = defineStore('stock', () => {// 初始化库存数据const stock = ref(20)// 计算库存的两倍const doubleStock = computed(() => {return stock.value * 2})// 增加const addStock = () => {stock.value++} // 减少const subStock = () => {stock.value--} // 返回共享数据和操作函数return {stock,doubleStock,addStock,subStock}
      }
      
      • ref() 就是 state 属性

      • computed() 就是 getters 属性

      • function() 就是 actions 属性

4️⃣ 使用仓库。

<script setup>
// 导入库存仓库
import { useStockStore } from '@/store/stock.js'
// 创建库存仓库
const stockStore = useStockStore()
</script>
<template><div><p>已知库存数: {{ stockStore.stock }}</p><button @click="stockStore.addStock()">库存+1</button><button @click="stockStore.subStock()">库存-1</button><button @click="stockStore.doubleStock()">库存*2</button></div>
</template>
http://www.xdnf.cn/news/16042.html

相关文章:

  • WebkitSpeechRecognition 语音识别
  • QT6 源,七章对话框与多窗体(5) 文件对话框 QFileDialog 篇二:源码带注释
  • nginx + uwsgi + systemd 部署 flask
  • 在Windows Server 2012 R2中安装与配置IIS服务并部署mssql靶机教程
  • springboot实战篇1
  • 基于 HAProxy 搭建 EMQ X 集群
  • C++的“链”珠妙笔:list的编程艺术
  • 解决vscode中vue格式化后缩进太小的问题,并去除分号 - 设置Vetur tabSize从2到4,设置prettier取消分号semi
  • 计算机发展史:人工智能时代的智能变革与无限可能
  • 基于WebSocket的安卓眼镜视频流GPU硬解码与OpenCV目标追踪系统实现
  • 【PTA数据结构 | C语言版】哥尼斯堡的“七桥问题”
  • C# Lambdab表达式 Var 类
  • Elupload实现多个文件上传与已上传列表中做对比,若重复则只保留已上传列表中的数据,同时告诉用户,有哪些文件重复上传了
  • 搭建种草商城框架指南
  • 飞算科技:以原创技术为翼,赋能产业数字化转型
  • Linux第三课:需要自己安装的远程登录工具PuTTY的介绍
  • 【PTA数据结构 | C语言版】求单源最短路的Dijkstra算法
  • Taro 本地存储 API 详解与实用指南
  • G7打卡——Semi-Supervised GAN
  • EMBMS1820芯祥科技18单元电池监控器芯片数据手册
  • 华控的科技布局——全球化战略与合作生态
  • 力扣(LeetCode)第 161 场双周赛
  • macbookpro m1 max本儿上速搭一个elasticsearch+kibana环境
  • 基于deepseek的LORA微调
  • 【设计模式C#】简单工厂模式(用于简化获取对象实例化的复杂性)
  • 个人中心产品设计指南:从信息展示到用户体验的细节把控
  • mongodb源代码分析createCollection命令由create.idl变成create_gen.cpp过程
  • 在.NET Core API 微服务中使用 gRPC:从通信模式到场景选型
  • uniapp使用uni-ui怎么修改默认的css样式比如多选框及样式覆盖小程序/安卓/ios兼容问题
  • taro微信小程序的tsconfig.json文件说明