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

手写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.lryc.cn/news/249751.html

相关文章:

  • 解决webpack打包生成gz格式css/js文件没法在nginx使用的问题--全网唯一正确
  • 传统算法: Pygame 实现快速排序
  • HarmonyOS入门开发(三) 持久化存储Preferences
  • 类和对象——(3)再识对象
  • 【UGUI】实现背包的常用操作
  • 单机zk安装与zk四字命令
  • matlab导入excel数据两种常见的方法
  • 华为全屋智能5.0,无为而“智”
  • Flask 实现Token认证机制
  • MATLAB 和 Simulink 官方文档下载地址
  • 【Element】el-switch开关 点击弹窗确认框时状态先改变----点击弹窗取消框失效
  • Java 中最常用的设计模式之一,工厂模式模式的写法,
  • HTML的学习
  • JS设计模式 — 行为委托
  • Microsoft Expression Web - 网页布局
  • Java SpringBoot Controller常见写法
  • 【驱动】SPI驱动分析(五)-模拟SPI驱动
  • 人工智能_机器学习056_拉格朗日乘子法原理推导_公式由来详解_原理详解---人工智能工作笔记0096
  • 记RocketMQ本地开发环境搭建始末
  • 2023年全国职业院校技能大赛“ 信息安全管理与评估” 测试题2
  • flutter开发实战-readmore长文本展开和收缩控件
  • 如何使用简单的分支策略来保护您的 Git 项目
  • vue3的 nextTick()的使用
  • Redis Lua沙盒绕过 命令执行(CVE-2022-0543)漏洞复现
  • react中useState、useRef、变量之间的区别
  • 企业软件的分类|app小程序网站定制开发
  • Flink(八)【窗口】
  • 云轴科技ZStack信创云平台助力国泰君安期货实现信创改造
  • C语言猜数字小游戏
  • 自定义BeanPostProcessor之XssBeanPostProcessor