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

手写VUE后台管理系统5 - 整合状态管理组件pinia

整合状态管理组件

      • 安装
      • 整合
        • 创建实例
        • 挂载
        • 使用


在这里插入图片描述

pinia 是一个拥有组合式 API 的 Vue 状态管理库。
pinia 官方文档:https://pinia.vuejs.org/zh/introduction.html


安装

yarn add pinia

整合

所有与状态相关的文件都放置于项目 src/store 目录下,方便管理

src 下创建目录 store,目录设计如下:

  • index.ts:创建 pinia 实例
  • modules:状态管理目录,所以的状态文件统一放置于该目录下
创建实例

创建 index.ts 文件,内容如下

import { createPinia } from 'pinia'

const store = createPinia()

export default store
挂载

main.ts 文件中进行挂载

import { createApp } from 'vue'
import App from './App.vue'
import store from '@/store'

const app = createApp(App)
app.use(store)
app.mount('#app')
使用

定义Store

pinia 通过 defineStore 函数进行定义,第一个参数是名称,名称必须保持唯一,第二个参数有两种实现方法:Option 对象及 Setup 函数,接下来将分别介绍这两种方式如何实现定义。

  • Option Store

简单的理解:state 用于定义状态对象,getters 相当于 computed 计算属性,actions 相当于方法

import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state: () => ({ count: 0 }),
  getters: {
    double: (state) => state.count * 2,
  },
  actions: {
    increment() {
      this.count++
    },
  },
})
  • Setup Store

setup 函数更像 vue 的组合式函数,在函数中可以定义响应式属性、方法等,最后返回一个需要暴露出去的属性和方法的对象。

  • ref 定义状态对象,对应 Option 模式的 state
  • computed 定义计算属性,对应 Option 模式的 getters
  • function 定义方法,对应 Option 模式的 actions
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  function increment() {
    count.value++
  }

  return { count, increment }
})

使用Store

状态对象及计算属性需要使用 storeToRefs 方法进行提取,以保持及响应性,而方法则可以直接调用

const counterStore = useCounterStore()
const { count } = storeToRefs(counterStore)
counterStore.increment()

http://www.kler.cn/a/149718.html

相关文章:

  • vue3+element-plus==> el-form输入响应式失效踩坑!!!!!!!!!!
  • 【go从零单排】Timer、Epoch 时间函数
  • 猿创征文|Inscode桌面IDE:打造高效开发新体验
  • 深入探讨 MySQL 配置与优化:从零到生产环境的最佳实践20241112
  • IEC60870-5-104 协议源码架构详细分析
  • 平替 Spring 正当时!Solon v3.0.3 发布
  • 【批处理常用命令及用法大全】
  • 基于SpringBoot的教师工作量管理系统
  • 【Flutter】graphic图表实现tooltip一段时间后自动隐藏
  • matlab画双坐标图的样式
  • NX二次开发UF_CSYS_create_temp_csys 函数介绍
  • TypeScript 之 Date日期对象
  • 讲述 什么是鸿蒙 为什么需要鸿蒙 为什么要学习鸿蒙
  • 【libGDX】Mesh纹理贴图
  • springboot集成mybatis-plus
  • uniapp 可拖动可吸附悬浮按钮,兼容app,小程序,H5
  • 算法通关村-----数论问题解析
  • P9240 [蓝桥杯 2023 省 B] 冶炼金属(比值问题)
  • 国内划片机行业四大企业之博捷芯:技术驱动,领跑未来
  • 智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 每日一练:约瑟夫生者死者小游戏
  • Spring Application Event 在事件驱动设计中的应用
  • 西南科技大学数字电子技术实验二(SSI逻辑器件设计组合逻辑电路及FPGA实现 )预习报告
  • python tkinter 使用(七)
  • 3-Python与设计模式--简单工厂模式
  • Android平台GB28181设备接入模块开发填坑指南