Pinia的使用

1,介绍

Pinia是一个状态管理的工具,作用和Vue2中Vuex相差不多,它实现状态管理分为两种语法:选项式API和组合式API,当前我们讲的是组合式API

2,使用

安装:

yarn add pinia
// or
npm i pinia
// or
pnpm i pinia

导入:

import { createApp } from 'vue'
import App from './App.vue'
// 导入
import { createPinia } from 'pinia'

// 挂载
createApp(App).use(createPinia()).mount('#app')

创建仓库&使用仓库:

1,引入pinia中的defineStore方法,第一个参数就是该仓库的id,具有唯一性,第二个参数是一个对象,里面就是放置的数据,外面需要的数据需要return出来

import { defineStore } from 'pinia'
import { ref } from 'vue'

export const userDefineStore = defineStore('store', () => {
  const num = ref<number>(0)
  const addNum = () => num.value++

  return {
    num,
    addNum,
  }
})

2,在需要使用的页面上,需要导入使用

<script setup lang="ts">
// 导入仓库
import { userDefineStore } from '../store/index'
// 变量接取
const store = userDefineStore()
</script>
<template>
  <div>
    // 在模板中直接使用store调用即可
    home:{{ store.num }}
    <button @click="store.addNum">HomeNum++</button>
  </div>
</template>

3,我们可以使用解构来接取仓库中的数据、方法,但是这样会丢失响应式,所以我们就要用到storeToRefs。

storeToRefs也是pinia中的一个API,就是用来解决解构数据之后,响应式丢失的问题的,在模板中使用直接写变量名即可,但是在js中使用,需要添加value

<script setup lang="ts">
import { userDefineStore } from '../store/index'
import { storeToRefs } from 'pinia'
const store = userDefineStore()
// 如果此处未使用storeToRefs,num就不是响应式的数据
// 函数表达式不能解构,还是得使用store调用
let { num } = storeToRefs(store)
setTimeout(() => {
  num.value += 3000
}, 3000)
</script>
<template>
  <div>
    home:{{ num }}
    <button @click="store.addNum">HomeNum++</button>
  </div>
</template>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值