iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue状态管理之使用Pinia代替Vuex
  • 529
分享到

Vue状态管理之使用Pinia代替Vuex

2024-04-02 19:04:59 529人浏览 薄情痞子
摘要

目录1、Pinia是什么2、Pinia简单上手3、使用体验1、Pinia是什么 Pinia是一个Vue的状态管理方案,是vuex团队成员开发,实现了很多vuex5的提案,更加地轻量化

1、Pinia是什么

Pinia是一个Vue的状态管理方案,是vuex团队成员开发,实现了很多vuex5的提案,更加地轻量化且有devtools的支持

vuex4一直被人诟病对于typescript的支持不良好,vuex5也迟迟未来

所以有了pinia的出现

相较于vuex:

  • pinia无需创建复杂的包装器来支持typescript,对于typescript类型判断是天然支持的,享受ide带来的自动补全,减少开发的心智负担,减少vue开发过程中的面向字符串编程
  • 减去了mutations的概念,只保留state,gettersanctions三个概念,减少代码冗余
  • 无需手动添加store,创建的store会在使用时自动添加
  • 没有模块module的概念,不用面对一个store下嵌套着许多模块,使用单文件store(有点类似redux/toolkit的一个reducer),可以直接导入其他store使用

Pinia文档有这么一段话:

Pinia 试图尽可能接近 Vuex 的理念。 它旨在测试 Vuex 下一次迭代的提案,并且取得了成功,因为我们目前有一个针对 Vuex 5 的开放 RFC,其 api 与 Pinia 使用的 API 非常相似。 请注意,我(Eduardo),Pania 的作者,是 vue.js 核心团队的一员,并积极参与了 Router 和 Vuex 等 API 的设计。 我个人对这个项目的意图是重新设计使用全局 Store 的体验,同时保持 Vue 平易近人的哲学。 我让 Pania 的 API 与 Vuex 一样接近,因为它不断向前发展,以便人们可以轻松地迁移到 Vuex 或什至在未来融合两个项目(在 Vuex 下)。

所以现在学习Pinia,相当于提前学习Vuex5就是说

2、Pinia简单上手

首先我们初始化一个vite+vue+ts工程


pnpm create vite pinia-demo -- --template vue-ts

安装pinia


pnpm i pinia

打开项目,编辑src目录下的mian.ts文件,引入Pinia


// main.ts
​
import { createApp } from 'vue'
import App from './App.vue'
​
import { createPinia } from 'pinia'
​
createApp(App).use(createPinia()).mount('#app')

src目录下创建一个store文件夹用来存放状态管理,然后新建一个counter.ts,我们来做一个简单的计数器状态应用


import { defineStore } from 'pinia'
​
export const useCounterStore = defineStore('counter', {
  state: () => {
    return {
      count: 0,
    }
  },
  getters: {
    doubleCount: (state) => state.count * 2,
  },
  actions: {
    increment() {
      this.count++
    },
  },
})

Pinia通过defineStore函数来创建一个store,它接收一个id用来标识store,以及store选项

我们也可以使用一个回调函数来返回options,回调函数体内的写法类似vuesetup()写法,比如上面的定义可以写成


export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  function doubleCount() {
    return count.value * 2
  }
  function increment() {
    count.value++
  }
​
  return { count, increment }
})

接着我们在App.vue中使用store


<script setup lang="ts">
import { useCounterStore } from './store/counter'
const useCounter = useCounterStore()
</script>
​
<template>
  <h2>{{ useCounter }}</h2>
  <h2>{{ useCounter.count }}</h2>
  <h2>{{ useCounter.doubleCount() }}</h2>
  <button @click="useCounter.increment">increment</button>
</template>
​
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -WEBkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

在使用Pinia的过程中可以发现自动补全是相当优秀

浏览器运行如下:

打开开发者工具查看vue devtool

vue devtool支持对Pinia状态的增删改查!

Pinia有多种对状态的修改方式:

  • 使用actions,如上面所示
  • 直接在状态上修改

const countPlus_1 = useCounter.count++

使用store$patch函数,支持选项和回调函数两种写法,回调函数适用于状态为数组或其他之类的需要调用状态方法进行修改


const countPlus_2 = useCounter.$patch({ count: useCounter.count + 1 })

const countPlus_3 = useCounter.$patch((state) => state.count++)

对状态的结构需要使用StoreToRefs函数


const { count } = storeToRefs(useCounter)

3、使用体验

Pinia的学习和使用是相当友好的,看一遍官方文档就能上手,在上手过程中可以明显地感受到相对于vuex更加快捷,编码体验优秀。

状态管理对于小项目来说更注重于方便和快捷(甚至可以不想需要),所以像vuex是稍微有些复杂了,像vue3beta的时候就有人说可以使用组合式api比如provideinject配合来替代vuex,所以Pinia这个轻量级状态管理方案的出现是相当及时的。

到此这篇关于Vue状态管理之使用Pinia代替Vuex的文章就介绍到这了,更多相关使用Pinia代替Vuex内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue状态管理之使用Pinia代替Vuex

本文链接: https://www.lsjlt.com/news/156667.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue状态管理之使用Pinia代替Vuex
    目录1、Pinia是什么2、Pinia简单上手3、使用体验1、Pinia是什么 Pinia是一个vue的状态管理方案,是vuex团队成员开发,实现了很多vuex5的提案,更加地轻量化...
    99+
    2022-11-12
  • Vue之Pinia状态管理
    目录一、认识Pinia1.1 认识Pinia1.2 为什么使用Pinia?二、 Store2.1 定义Store2.2 Option对象2.3 setup函数2.4 使用定义的Sto...
    99+
    2023-05-14
    Javascript Vue Pinia状态管理 Vue Pinia状态管理 Pinia状态管理
  • Vue状态管理库Pinia和Vuex使用哪个好
    今天小编给大家分享一下Vue状态管理库Pinia和Vuex使用哪个好的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Vuex ...
    99+
    2023-07-05
  • Vue3状态管理之Pinia怎么使用
    这篇文章主要介绍“Vue3状态管理之Pinia怎么使用”,在日常操作中,相信很多人在Vue3状态管理之Pinia怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3状态管理之Pinia怎么使用”的疑...
    99+
    2023-06-30
  • Vue之Pinia状态管理的方法是什么
    这篇文章主要介绍“Vue之Pinia状态管理的方法是什么”,在日常操作中,相信很多人在Vue之Pinia状态管理的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue之Pinia状态管理的方法是什么...
    99+
    2023-07-05
  • 聊聊两个Vue状态管理库Pinia和Vuex,该用哪个?
    本篇文章带大家聊聊Vue状态管理,介绍一下两个Vue状态管理库:Pinia和Vuex,希望对大家有所帮助!Vuex 和 Pinia 是用于管理 Vue.js 应用程序状态的标准 Vue.js 库。让我们比较一下他们的代码、语言、功能和社区支...
    99+
    2023-05-14
    Vue Pinia VueX
  • Vue新的状态管理Pinia怎么使用
    今天小编给大家分享一下Vue新的状态管理Pinia怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。为什么有 Vuex ...
    99+
    2023-07-06
  • vue之使用vuex进行状态管理详解
    目录vuex进行状态管理vuex状态管理基本使用vuex进行状态管理 首先学习vuex必须先知道vue原理 Vue是一个典型的MVVM框架,模型(Model)只是普通的JavaScr...
    99+
    2022-11-13
  • Vue新一代状态管理工具Pinia的具体使用
    目录前言优点安装创建并挂载创建store使用store回显与修改state使用$patch对多条数据直接修改使用actions使用getters多个store相互调用数据持久化安装使...
    99+
    2022-09-27
  • Vue全新状态管理Pinia怎么用
    这篇文章给大家分享的是有关Vue全新状态管理Pinia怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Vuex 作为一个老牌 Vue 状态管理库,大家都很熟悉了Pinia 是 Vue.js 团队成员专门为 V...
    99+
    2023-06-29
  • 一文详解Pinia和Vuex与两个Vue状态管理模式
    目录前言安装挂载VuexPinia修改状态vuexPiniaPinia解构(storeToRefs)gettersPiniaVuexmodulesPiniaVuex写在最后前言 Pi...
    99+
    2022-11-13
  • vue使用Vuex状态管理模式
    目录1、基于单向数据流问题而产生了Vuex2、安装及使用3、核心及使用方法(1)State(2) Getters(3) Mutation(4) Action(5)Modules4、V...
    99+
    2022-11-13
  • Vue3状态管理之Pinia的入门使用教程
    目录Vue3 新的发展方向(来源于尤大知乎)一、Pinia 简介与基础1.1 Pinia 简介1.2 Pinia 基础二、Pinia 在Vue3-Vite中的使用2.1 基础使用流程...
    99+
    2022-11-13
  • vue中使用pinia全局状态管理的实现
    目录与vuex的区别安装引入pinia创建状态目录pinia模块组成创建pinia模块在组件中使用该状态机pinia模块实例中的api讲解状态持久化与vuex的区别 去除了 muta...
    99+
    2022-11-13
  • Vue项目新一代状态管理工具Pinia的使用教程
    目录前言Pinia与Vuex的区别使用Pinia直接修改数据的两种方式使用actions修改数据重置state中数据Pinia持久化存储Pinia模块化实现Pinia中store之间...
    99+
    2022-11-13
    vue pinia状态管理工具 vue pinia用法 vue状态管理工具
  • Vue状态管理库Vuex如何使用
    本篇内容介绍了“Vue状态管理库Vuex如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Vue.js 是一个流行的 JavaScrip...
    99+
    2023-07-05
  • Vue3状态管理库Pinia如何使用
    这篇文章主要介绍“Vue3状态管理库Pinia如何使用”,在日常操作中,相信很多人在Vue3状态管理库Pinia如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3状态管理库Pinia如何使用”的疑...
    99+
    2023-07-04
  • vue状态管理模式之vuex如何实现
    小编给大家分享一下vue状态管理模式之vuex如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、初始vuex1.1 vu...
    99+
    2022-10-19
  • vue怎么使用Vuex状态管理模式
    这篇“vue怎么使用Vuex状态管理模式”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue怎么使用Vuex状态管理模式”文...
    99+
    2023-06-29
  • Vue项目中如何用Pinia状态管理工具
    这篇文章主要介绍“Vue项目中如何用Pinia状态管理工具”,在日常操作中,相信很多人在Vue项目中如何用Pinia状态管理工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue项目中如何用Pinia状态管...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作