vue3使用pinia

Pinia 是新一代的状态管理器,由 Vue.js团队中成员所开发的,因此也被认为是下一代的 Vuex,即 Vuex5.x,尤雨溪推荐在vue3项目中替代Vuex。

1、对 typescript 兼容性更好;
2、去除 mutations,只有 state,getters,actions;
3、修改状态可以直接修改,也可以在action中修改;
4、actions中 支持使用同步和异步;
5、更加小巧,压缩后的体积只有1.6kb;
6、可以创建多个store;

一、安装

npm i pinia --save-dev

二、使用

1、挂载


	import { createPinia } from 'pinia';
	const pinia = createPinia();
	app.use(pinia);
	app.mount('#app')

2、创建store

store/index.js


import { defineStore } from "pinia"
 
 /**
   * 这个 第一个参数main,也称为 id,是必要的,Pinia 使用它来将 store 连接到 devtools。 
   * 将返回的函数命名为use...(更好的语义化) 是跨可组合项的约定,以使其符合你的使用习惯。
 */
export const useStore  = defineStore('main', {

  state: () => {
    return {
      count: 0,
      list: [1, 2, 3, 4 ]
    }
  },
  /**
   * 用来封装计算属性 有缓存功能  类似于computed
   */
  getters: {
    getNum(state){
        return `我是一个计数器${state.count}`
    }
    
    //或者不使用state传递参数直接使用this
   	//getNum(){
    //    return `我是一个计数器${this.count}`
   // }
   
  },
  /**
   * 编辑业务逻辑  类似于methods
   */
  actions: {
    changeState(){
        this.count = 123;
    }
  }
 
})

3、使用store

	
<template>
	{{ store.count }}
</template>

import { useStore } from '@/store/index.js'

const store = useStore();


4、使用getters

Pinia中的 getters 与vue中的getter同为计算属性,具有缓存性,如果getters中的属性值未发生变化,多次调用只执行一次

store/index.js


  getters: {
    getNum(){
        return ` 计数 ${this.count} `
    }
  },
  

<template>

    {{ store.getNum }}
    
</template>

getters传值

使用getters组件中可以传递参数

<div>{{store.getters 函数名(参数)}}</div>


在store里边找到对应的getters函数

getters:{
getters函数名(state){
return (形参)=>{
执行代码
}
}
}

5、调用store里边的actions

store.actions 方法名()

actions传值

在actions里接收一个形参

actions:{

actions函数参数名(形参){

}

}

在组件中传递实参

store.actions函数名(实参)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小白的成长日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值