首页 > 编程笔记 > JavaScript笔记 阅读:6

Pinia是什么,Pinia状态管理器简介(新手必看)

虽然 Vuex 的功能非常强大,但不得不说它涉及非常多的概念,如设置状态(state)、获取内容(getters)、修改数据(mutations)、异步操作(actions)、模块拆分(modules)、插件辅助(plugins)、命名空间(namespaced)等。这么多的概念无疑会增加开发者学习 Vuex 的难度和使用 Vuex 的成本。

那么,是否有一种更好的状态管理器可以和 Vue 配合使用呢?答案是:有的。它就是 Pinia。

Pinia 是由 Vue 项目的核心成员开发的,他们希望利用更简单的操作方式来进行 Vue 项目的状态管理,因此 Pinia 简化了 Vuex 中的很多概念与层次,让开发者能够更容易地使用。

Pinia 的结构如下图所示:


图 1 Pinia 的结构

与下图进行对比就能发现 Pinia 与 Vuex 的差异:


图 2 Vuex 的结构

第 1 个差异是 store 模块中少了 mutations 层。也就是说,Pinia 可以直接在 action 方法中更新状态数据,即代码简化了。

第 2 个差异是 Pinia 是多 store 的设计,而不像 Vuex 的单 store。其优势是每个模块都通过自己的 store 来管理自己的状态数据,而不用像 Vuex 那样整合多个模块的 state 来形成状态数据的嵌套。这样在读取 state 和 getters 数据时,比使用 Vuex 更简单了。

第 3 个差异在图上体现得不明显,在 Vuex 中要触发某个 mutation 或 action 方法调用时,都是通过名称参数来进行匹配的,在书写名称时是不可能有精准的补全提示的。而 Pinia 完美地解决了此问题,所有声明的 action 方法都会成为 store 对象的方法,所有声明的状态数据和 getters 中的计算属性都会成为 store 对象的属性。开发者可以通过 store 对象直接调用 action 方法,以及读取 state 和 getters 中的数据,此时就有精准的补全提示了。

Pinia 状态管理器中的 5 个核心概念需要读者强化理解,如下表所示:

表:Pinia 中的核心概念
核心概念 作用
store 管理状态数据的“大管家”对象,应用中包含多个
state 返回包含 n 个状态数据属性的对象的函数(要求使用箭头函数)
getters 包含 n 个基于 state 的计算属性的对象
actions 包含 n 个更新状态数据的方法的对象,可以包含逻辑操作和异步操作
plugins 配置 Pinia 的插件的数组

相关文章