vue-pinia状态管理

vue学习

系列文章目录暂空
`


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

pinia作为vuex状态管理库的替代方案,其提供更简洁,符合vue3风格的API。它保留了vuex中的state、actions、getters三个概念。


一、安装pinia

如果使用create-vue框架来创建vue项目,可以简洁的来在项目中引入pinia.
在这里插入图片描述
但为了熟悉引入流程,我们先尝试手动引入。

1.下载pinia

使用我们使用包管理工具来下载pinia

yarn add pinia

或者使用 npm

npm install pinia

2.注册

我们需要在main.js文件中注册pinia
在这里插入图片描述

二、基础使用

1.定义store

我们想要使用pinnia存放数据,需要先创建一个store仓库,该操作要使用pinia中的defineStore函数完成。

import { defineStore } from 'pinia'

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

我们会在该函数的第二个参数中对该仓库的给个部分进行配置和定义。
并且我们在进行配置时可以使用vue2的选项式风格,也可以使用vue3的组合式风格。

1.1选项式风格

我们可以使用vue2的风格来自定义state、actions、getters三个部分。

state:存储的数据
actions:操控和设置state的方法
getters:获取state的方法

其格式如下:

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

1.2组合式风格

我们也可以使用vue3的风格来定义其中的数据和方法。
其格式如下:

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

  return { count, doubleCount, increment }
})

注意:使用组合式来进行仓库的配置时,需要在最后返回配置

2.使用数据

想要使用pinia中的数据,我们先要在组件中导入defineStore创建的对象,然后就可以使用该对象获取到其中的数据,如:
在这里插入图片描述
注意:这里直接用对象.属性对象.方法来使用对应的属性和方法即可,不能对其进行解构操作(也不绝对,想要解构使用需要引入另一个方法,但这里就忽略,可以在想要时去查别的文章),否则会失去数据响应式的特点。

3.方法

pinia中的方法不再像vuex那样单独区分同步和异步方法。它们都统一定义在actions中。
想要使用异步方法时也直接定义即可:
在这里插入图片描述


总结

这篇文章简要介绍了pinia的基础使用,作为vue学习的内容之一,后续会进行补充更新。

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值