1.什么是Pinia?
1.pinia 和 vuex 具有相同的功效, 是 Vue 的存储库,它允许您跨组件/页面共享状态。
2.设计使用的是 Composition api,更符合vue3的设计思维。
3.Pinia 对 Vue 2 和 Vue 3 都有效,并且不需要您使用组合 API。
2.Pinia 的使用
2.1 Pinia 的安装
在安装Pinia的时候可以使用yarn 也可以使用 npm
2.2 Pinia 的引入
一般我们在做项目的时候,都会在main.js 或者 main.ts 中引入。
vue3 中引入的使用
vue2 中引入的使用
2.3 Pinia 模块的创建
我们可以在vue的项目中,在src文件夹下面创建一个store文件夹专门来管理我们的pinia 模块。在文件夹下面我们可以创建多个js或者ts文件来对应我们的模块。
下面就是我在store 文件夹下面创建的一个index.js模块。
2.4 Pinia 数据页面的使用
我们以vue3 页面为例,简单介绍一下,Pinia页面的使用。
当然如果你vuex辅助函数用的非常熟练的话,你就会产生疑问,在上面代码 p 标签中,我不写store.count。直接写成 count 行不行呢
显然在页面中我们依然能看到 count 数据被展示在页面上,我们是使用 pinia 给我们提供的 storeToRefs 来展开的。我们会发现他其实和 我们在 vue3 中使用的 toRefs 非常的像。
3.pinia 中 修改 state 数据的方法。
3.1 直接修改 store 对象的数据
通过上面的代码,我们会发现,当我点击button 按钮累加的时候,页面中 count 数据就跟着发生了变化
3.1 $patch 方法传递一个对象来修改。
通过以上代码我们也能实现数据的修改,但是有的小伙伴可能就有疑问了?为什么感觉比第一个还复杂了呢?
官方给我们的解释是 patch是做的优化了
patch 可以同时修改 多个数据。
通过上面的代码,你会发现,点击按钮,两个数据都会发生变化
3.3 $patch 方法传递一个函数来修改。
上面我们说了使用 $patch 传递一个对象来修改数据,那如果传递的是一个函数,该怎么修改呢?