Vue3 Pinia 状态管理库详解

在Vue3中,状态管理是非常重要的一部分。本文将深入介绍Vue3中的状态管理库Pinia,以及如何使用它进行集中式状态管理。

Pinia是一个符合直觉的Vue.js状态管理库,它让你忘记正在使用的是一个状态库。尽管Vuex4已支持Vue 3的Composition API,但Vue3官网推荐新的应用使用Pinia。

Pinia与redux、mobx、vuex一样,属于集中式状态管理工具。它的轻量、易用性使得它比Vuex更受欢迎。在本文中,我们将深入介绍Pinia的安装、使用和扩展。

首先,我们需要安装Pinia环境。在main.ts中引入、创建和安装Pinia,然后在浏览器Vue开发者工具中就能看到Pinia的图标。

有时候Pinia的图标可能不会出现,这时可以尝试关闭浏览器或重启服务。


Tip

: 详细安装方法请查看Pinia官方文档。

Pinia的数据通常会放在store文件夹中。我们可以对状态进行分类,比如将用户相关的数据放在store/user.ts中。

通过defineStore定义一个store,第一个参数是store的id,命名建议规范,例如使用文件名,导出方式这里选择分别导出,导出的名字使用use+user+store。

State是一个函数,返回的就是数据。Actions中是一个一个的方法,但不需要像Vuex中需要使用dispatch触发。

接着在需要使用状态的地方使用。读取状态的方式有2种,修改状态的方式有3种。


Tip

: changeNameAndAge会触发2次修改,而changeNameAndAge2使用$patch会进行批量修改,从开发者时间线中看到,只执行1次。如果很多数据同时修改,推荐使用patch。

在Pinia中,我们可以使用storeToRefs来优雅地读取数据。这个方法只需要将数据转成ref即可,避免了toRefs方法将store所有属性都转成ref的重复操作。

Pinia也支持Getters,和Vuex中Getters的作用相同,用法类似。我们可以通过箭头函数或非箭头函数的方式定义Getters,并在需要的地方进行读取。

类似于Vuex的subscribe方法,Pinia中我们可以通过store的$subscribe()方法侦听state及其变化。这样就可以将state存储到本地,实现页面刷新时状态不丢失。

目前,Pinia中的actions和state写法属于声明式的。我们也可以将其改成组合式,这样写法更灵活,层级少,但必须返回。具体如何选择可以根据实际情况决定。

在使用ref数据时,我们不需要使用.value来读取响应式对象中的ref。

以上就是对Pinia状态管理库的详细介绍和使用方法。希望本文能够帮助读者更好地理解和使用Vue3中的状态管理库Pinia。

其他章节请看:

vue3 快速入门 系列

未经允许不得转载:大白鲨游戏网 » Vue3 Pinia 状态管理库详解