Vue3 状态管理 - Pinia

Vue3 状态管理 - Pinia

1. 什么是Pinia

Pinia 是 Vue 的专属的最新状态管理库 ,是 Vuex 状态管理工具的替代品
在这里插入图片描述

2. 手动添加Pinia到Vue项目

后面在实际开发项目的时候,Pinia可以在项目创建时自动添加,现在我们初次学习,从零开始:

  1. 使用 Vite 创建一个空的 Vue3项目
npm init vite@latest
  1. 按照官方文档安装 pinia 到项目中

3. Pinia基础使用

  1. 定义store
  2. 组件使用store

在这里插入图片描述

import { defineStore } from 'pinia'

// 你可以任意命名 `defineStore()` 的返回值,但最好使用 store 的名字,同时以 `use` 开头且以 `Store` 结尾。
// (比如 `useUserStore`,`useCartStore`,`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useAlertsStore = defineStore('alerts', {
  // 其他配置...
})

4. getters实现

Pinia中的 getters 直接使用 computed函数 进行模拟, 组件中需要使用需要把 getters return出去

在这里插入图片描述

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

  return { count, doubleCount, increment }
})

5. action异步实现

方式:异步action函数的写法和组件中获取异步数据的写法完全一致

  • 请求方式:get

  • 请求参数:无

在这里插入图片描述

需求:在Pinia中获取频道列表数据并把数据渲染App组件的模板中

6. storeToRefs工具函数

使用storeToRefs函数可以辅助保持数据(state + getter)的响应式解构
在这里插入图片描述

7. Pinia的调试

Vue官方的 dev-tools 调试工具 对 Pinia直接支持,可以直接进行调试
在这里插入图片描述

8. Pinia持久化插件

官方文档:https://prazdevs.github.io/pinia-plugin-persistedstate/zh/

  1. 安装插件 pinia-plugin-persistedstate
npm i pinia-plugin-persistedstate
  1. 使用 main.js
import persist from 'pinia-plugin-persistedstate'
...
app.use(createPinia().use(persist))
  1. 配置 store/counter.js
import { defineStore } from 'pinia'
import { computed, ref } from 'vue'

export const useCounterStore = defineStore('counter', () => {
  ...
  return {
    count,
    doubleCount,
    increment
  }
}, {
  persist: true
})
  1. 其他配置,看官网文档即可

相关推荐

  1. Vue状态管理pinia

    2024-03-10 19:02:06       28 阅读
  2. Vue状态管理Pinia

    2024-03-10 19:02:06       50 阅读
  3. Vue3状态管理工具——pinia的使用

    2024-03-10 19:02:06       71 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 19:02:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 19:02:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 19:02:06       82 阅读
  4. Python语言-面向对象

    2024-03-10 19:02:06       91 阅读

热门阅读

  1. 将base64格式的图片画到canvas上(js和vue两种)

    2024-03-10 19:02:06       35 阅读
  2. 主流开发语言和开发环境介绍

    2024-03-10 19:02:06       39 阅读
  3. nextTick原理

    2024-03-10 19:02:06       41 阅读
  4. prometheus配置grafana看板及alert告警文档

    2024-03-10 19:02:06       44 阅读
  5. B树、B+树及B*树的原理、作用及区别

    2024-03-10 19:02:06       39 阅读
  6. json-server 快速搭建本地服务器

    2024-03-10 19:02:06       50 阅读
  7. LeetCode111 二叉树的最小深度

    2024-03-10 19:02:06       47 阅读
  8. flask流式响应

    2024-03-10 19:02:06       48 阅读
  9. Flask从入门到精通

    2024-03-10 19:02:06       34 阅读