Vue3 Pinia 状态库的使用

Pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态。 如果您熟悉 Composition API,您可能会认为您已经可以通过一个简单的 export const state = reactive({}). 这对于单页应用程序来说是正确的,但如果它是服务器端呈现的,会使您的应用程序暴露于安全漏洞。

 Pinia的好处?

  • dev-tools 支持

        跟踪动作、突变的时间线
        Store 出现在使用它们的组件中
        time travel 和 更容易的调试

  • 热模块更换 

        在不重新加载页面的情况下修改您的 Store
        在开发时保持任何现有状态

  • 插件:使用插件扩展 Pinia 功能
  • 为 JS 用户提供适当的 TypeScript 支持或 autocompletion
  • 服务器端渲染支持

与 Vuex 相比,Pinia 提供了一个更简单的 API,具有更少的规范,提供了 Composition-API 风格的 API,最重要的是,在与 TypeScript 一起使用时具有可靠的类型推断支持。

下面让我们在Vue3项目中使用Pinia:

        第一步下载Pinia:

              npm install pinia 

        第二步在 main.js 中配置pinia 全局引入:

         

 下面创建pinia 数据:

        stores/counter.js

// stores/counter.js
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
    state: () => {
        return { count: 0 }
    },
    // 也可以定义为
    // state: () => ({ count: 0 })
    actions: {
        // 加数量方法
        increment() {
            this.count++
        },
    },
})

 在组件中使用:

        

<template>
    <!-- 渲染 -->
    {{ counter.count }}
    <!-- 触发方法数量加一 -->
    <el-button @click="add">加一</el-button>
</template>

<script setup>
import { useCounterStore } from '@/stores/counter'
// 获取pinia中的数据
const counter = useCounterStore()

// 加数量方法
function add() {
    counter.$patch({ count: counter.count + 1 })

    // 或使用 action 代替  触发action 方法
    // counter.increment()
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值