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

news/2024/5/20 2:53:14 标签: vue3, vite, ts, 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 文件,内容如下

ts">import { createPinia } from 'pinia'

const store = createPinia()

export default store
挂载

main.ts 文件中进行挂载

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 相当于方法

ts">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
ts">import { defineStore } from 'pinia'

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

  return { count, increment }
})

使用Store

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

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

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

相关文章

视图层、模板(补充)

视图层 响应对象 响应---》本质都是 HttpResponse HttpResponse---》字符串render----》放个模板---》模板渲染是在后端完成 js代码是在客户端浏览器里执行的模板语法是在后端执行的redirect----》重定向 字符串参数不是是空的状态码是 3开头JsonResponse---》json格式数据 …

实习开发日志经验总结(一)

文章目录 前言实习日志经验总结 前言 自己之前实习过程中遇到的问题以及相应的解决过程,我都有记录形成比较凌乱的实习日志。故想在整个实习日志的基础上,提炼一些技术知识点或者是解决问题的思路。考虑到实习项目的不方便公开性,所以会隐去…

第三方UI组件库的样式修改

一、场景: 一般来说,我们在使用第三方UI组件库(如:vant,element-plus等)时,UI组件库自带的样式不能满足用户的个性化需求时,就需要我们开发人员自己动手对组件库的局部样式进行修改。…

Linux(openssl):创建CA证书,并用其对CSR进行签名

1.创建CA证书: 1.1创建CA证书目录ca,并进入ca $ mkdir ca $ cd ca 1.2创建CA证书私钥 $ openssl genrsa -aes256 -out ca.key 2048 Enter PEM pass phrase: Verifying - Enter PEM pass phrase: 输入两次密码后,在ca目录下生成了私钥文件ca.key 1.3生成CSR $ openssl req -…

MongoDB mongoshake 迁移分片到复制集合

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群。加群请联系 liuaustin3 ,(共1730人左右 1 2 3 4 5) 4群(240&#xff09…

引领Serverless构建之路,亚马逊云科技re:Invent 2023首日主题演讲重磅发布

在每年的亚马逊云科技re:lnvent大会,由Peter DeSantis带来的《周一晚间直播》是re:lnvent大会的第一个并让人值得期待的主题演讲。作为亚马逊云科技高级副总裁,Peter发布了数据库和应用领域的三项Serverless创新,使客户能够更快、更轻松地扩展…

次世代建模纹理贴图怎么做?

在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 1、什么是次时代建模? "次世代建模"是一个术语,通常用来描述…

服务器怎么提高容错率呢

一、服务器的开关电源供货 确保服务器有着数据冗余的开关电源供货,包含公司级ups电源、按时检验的预留发电机组等。假如大数据中心沒有数据冗余 电力工程,将会造成服务器终断运行。 二、服务器硬件数据冗余 不管租赁哪些服务器,服务器硬件和互…