Vue3中的pinia使用,入门教程

文章目录

一、pinia原理?

  • 功能:管理全局共享数据,pinia与vuex功能一样
  • 优势:pinia相对于vuex增加了对ts的支持,对响应式的支持

二、组成部分

  • State:存储共享的数据
  • Actions:可以包含任意异步操作,如axios,提交(dispatch),action自动commit给mutation,保证所有数据同步更新,其他方法,会使部分数据失真
  • Mutations:pinia已取消,vuex中会有

1. pinia使用流程:

  • 安装依赖,下载包

npm install pinia

  • main.js中引入pinia并创建容器挂载到根实例上
//引入stores暴露出的pinia的实例
import pinia from './stores'

createApp(App).use(pinia).mount('#app')
  • 创建stores文件夹和index.js文件(这个文件以后基本不用管了)
import { createPinia } from "pinia";

const pinia = createPinia()

export default pinia
  • stores文件夹下创建counter.js文件。这个文件就是存有关counter相关的数据。(类似vuex的模块化)
  • defineStore 是需要传参数的:
  1. 第一个参数是id,就是一个唯一的值,简单点说就可以理解成是一个命名空间.
  2. 第二个参数就是一个对象,里面有三个模块需要处理,第一个是 state,第二个是 getters,第三个是 actions。
//定义关于counter的store
import {defineStore} from 'pinia'

/*defineStore 是需要传参数的,其中第一个参数是id,就是一个唯一的值,
简单点说就可以理解成是一个命名空间.
第二个参数就是一个对象,里面有三个模块需要处理,第一个是 state,
第二个是 getters,第三个是 actions。
*/
const useCounter = defineStore("counter",{
    state:() => ({
        count:66,
    }),
    
    getters: {

  	},

  	actions: {

  	}
})

//暴露这个useCounter模块
export default useCounter

注意:返回的函数统一使用useXXX作为命名方案,这是约定的规定。

  • 然后再组件中使用:

<template>
    <!-- 在页面中直接使用就可以了 不用 .state-->
  <div>展示pinia的counter的count值:{{counterStore.count}}</div>

</template>

<script setup>
// 首先需要引入一下我们刚刚创建的store
import useCounter from '../stores/counter'
// 因为是个方法,所以我们得调用一下
const counterStore = useCounter()

</script>
 

1.2.注意Store获取到后不能解构,否则失去响应式

<template>
  <div>展示pinia的counter的count值:{{counterStore.count}}</div>
  <div>展示解构出来的pinia的counter的count值:{{count}}</div>
  <button @click="addCount">count+1</button>
</template>

<script setup>
    import useCounter from '../stores/counter'
    
    const counterStore = useCounter()
    
    const {count} = counterStore
    function addCount(){
      //这里可以直接操作count,这就是pinia好处,在vuex还要commit在mutaitions修改数据
      counterStore.count++
    }
<script/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值