前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Pinia不就是Vuex5?

Pinia不就是Vuex5?

作者头像
wade
发布于 2022-12-02 12:22:21
发布于 2022-12-02 12:22:21
59200
代码可运行
举报
文章被收录于专栏:coding个人笔记coding个人笔记
运行总次数:0
代码可运行

刚开始使用vue3的时候,全局状态管理器都是使用pinia。还没去了解的时候并不明白为什么要换掉vuex,毕竟是用了好几年的状态管理器,能达到的效果和语法跟vuex几乎一模一样,所以为什么要换?

当时创建模板项目的也没说清楚,就说是vue3团队推荐使用的,大家都在用,那就用吧。其实并不喜欢这样的答案,大家都用那就用。

去官网看看,去Vuex GitHub看看,这不就是vuex5吗,只是换了个名字。

Vuex GitHub:

Pinia is now the new default

The official state management library for Vue has changed to Pinia. Pinia has almost the exact same or enhanced API as Vuex 5, described in Vuex 5 RFC. You could simply consider Pinia as Vuex 5 with a different name. Pinia also works with Vue 2.x as well.

Vuex 3 and 4 will still be maintained. However, it's unlikely to add new functionalities to it. Vuex and Pinia can be installed in the same project. If you're migrating existing Vuex app to Pinia, it might be a suitable option. However, if you're planning to start a new project, we highly recommend using Pinia instead.

你可以简单地将 Pinia 视为具有不同名称的 Vuex 5。所以,相同的团队,相同的功能,就是换个名字。

肯定也有一些人用习惯了某个插件,心里还是有点排斥升级,完全没必要,使用方法几乎一模一样,而且更符合vue3,也兼容vue2.x,所以早点拥抱pinia吧。

个人认为几个比较大的点
  • 少了Mutation,action支持同步异步(用vuex的时候早就发现了mutation没啥用,单纯是为了更好区分同步异步)。
  • 更好的typescript支持,就像antd、element-plus都出了typescript版本。
  • 不用modules了,可以创建多个store,仍然可以通过在另一个store中导入和使用来隐式嵌套store,但Pinia通过设计提供平面结构,同时仍然支持store之间的交叉组合方式。您甚至可以拥有store的循环依赖关系。
  • 支持插件扩展(没用过,还不知道这个特性的意义)。
  • 服务器端渲染支持,对于做SSR是个福音。
  • 提供了 Composition-API 风格的 API。
使用

安装:npm install pinia

main.js注入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { createPinia } from "pinia";
const pinia = createPinia();

app.use(pinia);

创建store文件夹,如果分模块就个自新建自己的.ts文件:common.ts、goods.ts,也可以一个文件里面通过不同名字区分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { defineStore } from 'pinia'

export const commonStore = defineStore('common', {
    state: () => {
        return {
          name: 'common'
        };
    },
    actions: {
        saveName(name: string) {
            this.name = name;
        },
    },
})

使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  {{ store.name }}
</template>

<script setup lang="ts">
import { commonStore } from "../store/common";
const store = commonStore();

setTimeout(() => {
  store.saveName("wade");
}, 3000);
</script>

跟vuex真的一样,其它使用就不举例了,可以官网好好看看。

倒是几个API可以注意一下:

  • 重置$reset()
  • 批量修改$patch()
  • 替换整个state:store.$state
  • 订阅状态$subscribe()

所以,拥抱大菠萝pinia吧,只是新一代的vuex。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 coding个人笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Pinia状态管理器学习笔记,持续记录
官方文档:https://pinia.vuejs.org/ 中文文档:https://pinia.web3doc.top/
房东的狗丶
2023/02/17
1.7K0
测试一下Pinia,Vuex 要出局了?
自从我开始使用Vue 3和组合API以来,我也尝试使用 Pinea 作为状态管理库。如果是从是 vue2 和 vuex 过来的,就会觉得用起来差别还是很大的。
前端小智@大迁世界
2022/09/01
6570
测试一下Pinia,Vuex 要出局了?
欧耶!Pinia 正式成为 vuejs 的一员
Pinia 正式成为 vuejs 官方的状态库,意味着 🍍 就是 Vuex 5.x 。 先来看早期 vue 上一个关于 Vuex 5.x 的 RFC : 描述中可以看到,Vue 5.x 主要改善以下几个特性: 同时支持 composition api 和 options api 的语法; 去掉 mutations,只有 state、getters 和 actions; 不支持嵌套的模块,通过组合 store 来代替; 更完善的 Typescript 支持; 清晰、显式的代码拆分; 而 Pinia
码农小余
2022/06/16
6770
欧耶!Pinia 正式成为 vuejs 的一员
pinia基本使用介绍
比如开始的时候我们可以使用缓存进行同步数据,虽然很low但是它确实属于一种方案,但是这种方案的实时性很差,也就是很难做到信息的及时同步,虽然你可以写很多监听来达到一个同步的效果,但是代码维护起来就会很笨重
何处锦绣不灰堆
2022/09/21
9150
Vue3(ts)中使用 pinia
Pinia 最初是在 2019 年 11 月左右重新设计使用 Composition API,可以理解为下一代 vuex,作者也称之为vuex5,同时vue已经将 pinia 收入 官方账户了
iwhao
2024/07/03
6101
Vue3之状态管理:Vuex和Pinia,孰强孰弱?
在前端开发中,状态管理器是一种用于管理应用程序全局状态的工具。它通常用于大型应用程序,可以帮助开发者更好地组织和管理状态,并提供一些强大的工具来简化状态的变更和使用。
用户6297767
2023/11/21
2.7K0
Vue3之状态管理:Vuex和Pinia,孰强孰弱?
Vue项目进阶:再谈Pinia函数式(composition API)用法
Hello大家好,前段时间写了一篇关于Pinia的composition API用法的文章《Pinia进阶:优雅的setup(函数式)写法+封装到你的企业项目》,收到了不少朋友的反馈和建议。笔者也结合最近项目情况和网友们的建议做一次优化,也算是一个比较完整的版本了,这包括:
南山种子外卖跑手
2022/04/21
3.5K0
Vue项目进阶:再谈Pinia函数式(composition API)用法
uni-app小程序开发-使用Pinia进行全局状态管理
Pinia (发音为 /piːnjʌ/)支持 Vue 3 和 Vue 2 ,对 TypeScript 也有很完好的支持,与 Vuex 相比,Pinia 提供了一个更简单的 API,提供了 Composition-API 风格的 API,最重要的是,在与 TypeScript 一起使用时具有可靠的类型推断支持。
码客说
2024/07/24
6910
一文梳理vue面试题知识点
Vue3.x 改用 Proxy 替代 Object.defineProperty。因为 Proxy 可以直接监听对象和数组的变化,并且有多达 13 种拦截方法。
bb_xiaxia1998
2022/10/24
9820
Pinia进阶:优雅的setup(函数式)写法+封装到你的企业项目
Hello大家好,相信在座各位假如使用Vue生态开发项目情况下,对Pinia状态管理库应该有所听闻或正在使用,假如还没接触到Pinia,这篇文章可以帮你快速入门,并如何在企业项目中更优雅封装使用。
南山种子外卖跑手
2022/02/22
7.2K0
Pinia进阶:优雅的setup(函数式)写法+封装到你的企业项目
快速了解并使用pinia
Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。它和vuex的作用一样都是做状态管理的。
用户9914333
2022/12/14
8160
快速了解并使用pinia
【玩转全栈】---- Pinia 组件状态管理器
Pinia 是一个用于 Vue 3 的状态管理库,旨在提供更加简洁、直观且灵活的状态管理模式。它由 Vue 官方团队成员开发,以其轻量级和高性能著称。Pinia 支持 Vue 3 的组合式 API,并允许开发者以一种更自然的方式组织和共享应用状态。与 Vuex 不同,Pinia 去除了复杂的概念如模块嵌套,转而采用扁平化的 store 结构,使得代码更加清晰易懂。此外,Pinia 还支持 TypeScript,提供了优秀的类型推断能力,增强了开发体验。通过 Pinia,你可以轻松地创建多个独立的 store 模块,每个模块都可以拥有自己的 state(状态)、getters(计算属性)、actions(方法)等,极大地简化了复杂应用中的状态管理。其灵活性还体现在对插件系统的良好支持,可以方便地扩展功能。总的来说,Pinia 是现代 Vue 应用中进行状态管理的理想选择。
用户11404404
2025/03/12
1200
一个基于vite构建的vue3+pinia+ts+elementUI plus的初始化开箱即用的项目模版
Vite 需要 Node.js 版本 >= 12.0.0。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。
用户6297767
2023/11/21
9530
一个基于vite构建的vue3+pinia+ts+elementUI plus的初始化开箱即用的项目模版
感受 Vue 新的状态管理工具之美之 Pinia---学习篇
相信在Vue中提到状态管理,大家一定会想到 Vuex。的确 Vuex确实是比较强大的,但Vuex 多少有点重,而且对 Typescript的支持也不是那么的友好,同时门槛也比较高,学习成本比较大。
用户9078190
2022/10/28
2560
感受 Vue 新的状态管理工具之美之 Pinia---学习篇
2021-10-06 vue3-你可能需要pinia来作为状态管理
好久没写博客了,其实我之前和现在写博客的唯一目的,就是为了记录一些不重要,但是以后可能会用但会忘的资料,也就是为了以后方便自己查找。这是其一。
无道
2021/10/08
1.6K0
Vue 框架学习系列五:Vue 3 与状态管理库 Pinia 的深度集成
在构建复杂的 Vue.js 应用时,状态管理是一个重要的考虑因素。Vuex 是 Vue.js 官方推荐的状态管理库,但随着 Vue 3 和 Composition API 的发布,一个新的状态管理库 Pinia 开始崭露头角。Pinia 提供了与 Vue 3 和 Composition API 更紧密的集成,同时保持了 Vuex 的核心概念,如 state、mutations、actions 和 getters。本篇文章将探讨如何在 Vue 3 应用中深度集成 Pinia。
china马斯克
2024/10/04
3630
进阶vue面试题总结
根据过滤器的名称,过滤器是用来过滤数据的,在Vue中使用filters来过滤数据,filters不会修改数据,而是过滤数据,改变用户看到的输出(计算属性 computed ,方法 methods 都是通过修改数据来处理数据格式的输出显示)。
bb_xiaxia1998
2022/10/19
9680
【Vue工程】006-Pinia
https://stackblitz.com/github/piniajs/example-vue-3-vite?file=README.md
訾博ZiBo
2025/01/06
1830
Vue3中使用Pinia详解
Pinia是一个专门为Vue.js设计的状态管理库,它提供了一种简单和直观的方式来管理应用程序的状态。在使用Pinia时,可以轻松地创建定义状态的存储,然后将其与Vue组件绑定,使它们能够使用该状态。和上一个博客提到的Vuex相比,Pinia 更加简单易用,体积更小,同时具有更好的 TypeScript 支持和插件系统。
九仞山
2023/10/14
1K0
轻量状态管理工具 Pinia
作为前端开发,你肯定知道状态管理是日常开发很重要的一部分。你肯定也听过许多状态管理工具,今天我们说一下 Vue 系列的新起之秀 Pinia。
政采云前端团队
2023/10/24
2170
轻量状态管理工具 Pinia
相关推荐
Pinia状态管理器学习笔记,持续记录
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验