从Vuex过渡到pinia

news2025/2/25 14:25:48

Vuex过渡到Pinia

众所周知,Vuex是一个状态管理库,它方便了我们任何组件不用考虑关系就可以共享一个全局的状态。😃但是

Vuex也有它一定的缺陷。主要缺点,我总结如下:

  1. mutations里面不能写异步函数,否则就可能会造成调试异常。
  2. 如果要有多个store,就需要分模块来进行管理,这无疑加重了我们的心里负担。
  3. mutations里面修改State状态,Actions里面主要是一些逻辑操作
  4. 对TS支持不太友好。

针对上述一系列问题,在Vue3中强烈使用PiniaPinia也是一个状态资源管理的东西。它相对于Vuex我觉得有以下优势:

  1. 对TS支持友好
  2. 使用更加简洁,包括:去除了mutations,modules,

下面来看一个pinia的例子(这里采用的是setup语法糖的写法)。

store/useTabStore

import {defineStore} from 'pinia'
import { ref} from 'vue'
const useTabStore=defineStore('tabStore',()=>{
    const state=ref<boolean>(false)

    const change=(value:boolean)=>{
        state.value=value
    }
    return{
        state,
        change
    }
})


export default useTabStore

App.vue

<template>
  我是APP组件:{{ store.state }}
  <HelloWorld></HelloWorld>
<hr>
</template>
<script setup lang="ts">
import HelloWorld from './components/HelloWorld.vue';
import tabStore from './store/useTabpinal.ts';
const store = tabStore();
console.log(store.state);


</script>
<style lang='scss' scoped>
</style>

HelloWorld.vue

<template>
我是children组件
<button @click="handleStore">切换state的值</button>
</template>
<script setup lang="ts">
import tabStore from '../store/useTabpinal';
const store=tabStore();
const handleStore=()=>{
  if (store.state) {
    
    store.change(false)
  }else{
    store.change(true)
  }
}
</script>
<style lang='scss' scoped>
</style>

在这里插入图片描述

总结:

· 通过defineStore来定义不同的store,从而实现了Vuex的分模块。

​ 通过computed就是Vuexgetters

​ 通过methods就是Vuex中的actions

​ 通过setup语法糖的写法,来快速定义操作。✨✨✨✨✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618808.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Simulink仿真模块 - Waveform Generator

Waveform Generator模块的功能是使用信号符号输出波形。它所在的库为: Simulink / Sources 如图所示: 双击模型弹出如下对话框,如图所示: Waveform Generator 模块根据您在波形定义表中输入的信号符号输出波形。 此模块支持下列用于信号符号的语法: 函数…

STM32单片机OLED语音识别路灯台灯控制系统人检测亮度调节

实践制作DIY- GC0143-OLED语音识别路灯台灯控制系统 基于STM32单片机设计---OLED语音识别路灯台灯控制系统 二、功能介绍&#xff1a; 电路&#xff1a;STM32F103C系列最小系统串口语音识别模块LED灯板1个红外传感器OLED显示器1个手动自动模式键1个开关按键 1.有两个模式1个手…

速卖通,国际站,temu测评,补单策略:安全与效能并重,提高账号存活率

测评能够帮助卖家让亚马逊平台更喜欢自己的产品&#xff0c;给予更好排名的同时也让后续进入店铺的买家更容易认可自己的产品。这些真实评价在亚马逊卖家管理系统中被称为Review Feedback。这是进行真实交易后形成的评价&#xff0c;而不是通过机器软件生成&#xff0c;形成虚拟…

SpringData进阶篇-下

SpringData进阶篇 一&#xff1a;故事背景二&#xff1a;自定义操作2.1 JPQL和SQL2.1.1 接口内定义2.1.2 调用2.2.3 SQL 方式查询 2.2 规定方法名2.2.1 普通查询规则2.2.2 修饰查询 2.3 Query By Example2.3.1 Repository继承QueryByExampleExecutor2.3.2 具体使用2.3.2 Exampl…

Aspose.Words功能演示:使用 C# 从 Word 文档中读取宏

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

java-不借用三方程序情况下,使用java自动工具将可执行jar转成exe

一、先新建一个javafx项目 二、配置Artifacts 点击Artifacts,会看到新建的项目会自动创建好了 如果没有的话,可以手动创建如下操作 三、配置 按下图逐一配置即可 四、builde 5、使用java的打包命令打包 PS C:\Users\xx\Downloads\cc\exeex\out\artifacts\JavaFXApp>…

web前端 --- js事件

js事件&#xff08;event&#xff09; &#xff08;js诞生就是基于事件驱动型编程&#xff09; &#xff08;1&#xff09;事件 用户通过各种行为&#xff08;按键、鼠标点击、鼠标hover......&#xff09;行为动作&#xff0c;引起相关 js 代码的执行。 事件的三元素&#x…

多篇论文入选ICASSP 2023 火山语音有效解决多类实践问题

近日由IEEE主办、被誉为世界范围内最大规模、也是最全面的信号处理及其应用方面的顶级学术会议ICASSP2023于希腊召开&#xff0c;该会议具有权威、广泛的学界以及工业界影响力&#xff0c;备受AI领域多方关注。会上火山语音多篇论文被接收并发表&#xff0c;内容涵盖众多前沿领…

springboot+vue+java企业车间工位管理系统

。本文介绍了企业级工位管理系统的开发全过程。通过分析企业级工位管理系统管理的不足&#xff0c;创建了一个计算机管理企业级工位管理系统的方案。文章介绍了企业级工位管理系统的系统分析部分&#xff0c;包括可行性分析等&#xff0c;系统设计部分主要介绍了系统功能设计和…

Vue.js 中的过滤器和计算属性

Vue.js 中的过滤器和计算属性 Vue.js 是一款流行的 JavaScript 框架&#xff0c;它提供了一种简单而灵活的方式来构建交互式 Web 应用程序。在 Vue.js 中&#xff0c;过滤器和计算属性是两个常用的概念。它们可以帮助开发者更方便地处理数据&#xff0c;提高代码的可读性和可维…

【学习日记】操作系统-入门知识-个人学习记录

我的学习笔记链接&#xff1a; MyLinuxProgramming 参考资料 CSAPP操作系统导论OSTEP √APUEhttps://stevens.netmeister.org/631软件调试王道-操作系统操作系统真象还原小林coding-图解系统https://xiaolincoding.com嵌入式软件开发笔试面试指南Linux是怎样工作的2020 南京大…

怎么才能成为一名合法的无线电爱好者?

要想成为一名合法的无线电爱好者&#xff0c;就必须要拥有属于自己的呼号及操作证书。那么具体怎么才能获得这些呢&#xff1f;下面河南宝蓝小编就为大家详细介绍下。 车载电台 一、无线电的呼号是什么&#xff1f; 呼号&#xff0c;是从事无线电操作人员或电台&#xff0c;在…

第12章 并 发

多进程与多线程本质的区别&#xff1a;每个进程都拥有自己的一整套变量&#xff0c;而线程则共享数据。 12.1 什么是线程 将执行这个任务的代码放在一个类的run方法中&#xff0c;这个类要实现Runnable接口。 Runnable接口非常简单&#xff0c;只有一个run方法&#xff1a; …

情感分析实战(中文)-数据获取

情感分析实战(中文)-数据获取 背景&#xff1a;该专栏的目的是将自己做了N个情感分析的毕业设计的一个总结版&#xff0c;不仅自己可以在这次总结中&#xff0c;把自己过往的一些经验进行归纳&#xff0c;梳理&#xff0c;巩固自己的知识从而进一步提升&#xff0c;而帮助各大…

Ubuntu20、centos7安装部署Gitlab

目录 一、简介 二、安装GitLab 1、安装准备工作 2、安装Gitlab a、安装并配置必要的依赖 b、下载Gitlab c、启动postfix邮件服务&#xff0c;设置开机自启 d、安装Gitlab e、修改gitlab配置文件&#xff08;ip和端口&#xff09; g、更新配置文件并重启 h、通过ip地址加端口进行…

国产力作:全新Excel平台,画表格搭建软件,Access用户:告别VBA

全新Excel平台&#xff0c;功能强大到离谱&#xff1f; 最近&#xff0c;发现了一款新型的软件&#xff0c;而且还是国产的&#xff0c;功能超级强大&#xff0c;用法却很简单。就是感觉非常的厉害&#xff01; 一款全新的Excel平台&#xff0c;但是却跟Excel没有任何联系&am…

webpack.config.js基础配置(五大核心属性)

在上一节webpack零基础入门中我们在安装完webpack 和 webpack-cli依赖之后&#xff0c;直接通过npx webpack ./src/main.js --modedevelopment的方式对src下的js文件进行了打包。 其中的 ./src/main.js: 指定 Webpack 从 main.js 文件开始打包&#xff0c;不但会打包 main.js&a…

A ConvNet for the 2020s

A ConvNet for the 2020s 2020年代的ConvNet https://openaccess.thecvf.com/content/CVPR2022/papers/Liu_A_ConvNet_for_the_2020s_CVPR_2022_paper.pdf Zhuang Liu 1 , 2 ∗ ^{1,2*} 1,2∗ Hanzi Mao 1 ^1 1 Chao-Yuan Wu 1 ^1 1 Christoph Feichtenhofer 1 ^1 1 Trevor Da…

mpls vpn综合实例配置案例

如图1所示&#xff1a; 1、AR4连接公司总部财务部、AR6连接分支机构财务部&#xff0c;AR4和AR6属于vpna&#xff1b; 2、 AR5连接公司总部办公、 AR7连接分支机构办公&#xff0c; AR5和 AR7属于vpnb。 公司要求通过部署BGP/MPLS IP VPN&#xff0c;实现总部和分支机构的安全互…

2023年6月DAMA-CDGA/CDGP数据治理工程师认证到这家

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…