【vue3之Pinia:状态管理工具】

Pinia:状态管理工具

  • 一、认识Pinia
  • 二、定义store
  • 三、gettters
  • 四、Action
    • 1.定义普通函数
    • 2.异步实现
  • 五、storeToRefs工具函数
  • 六、pinia持久化插件
    • 1. 安装插件
    • 2. main.js 使用
    • 3. 开启
    • 4.其他配置

一、认识Pinia

Pinia 是 Vue 的最新 状态管理工具 ,是 Vuex 的 替代品
优点:

  1. 提供更加简单的API (去掉了 mutation )
  2. 提供符合,组合式风格的API (和 Vue3 新语法统一)
  3. 去掉了 modules 的概念,每一个 store 都是一个独立的模块
  4. 配合 TypeScript 更加友好,提供可靠的类型推断
    注:在Pinia中,省去了mutations和modules两个核心概念,actions里能直接同步或者异步修改state里的值

二、定义store

  1. 定义store
  2. 组件使用store

来自vue3官网:
在store.js文件夹下定义
在这里插入图片描述
选择组合式API的方式定义属性和方法:
在这里插入图片描述

在这里插入图片描述

三、gettters

Getter 完全等同于 store 的 state 的计算值。

在这里插入图片描述
然后再return一下douleCount就可以在组件中使用了:

  return {count,doubleCount,}

四、Action

action相当于组件中的 method。

1.定义普通函数

  const count = ref(100)// 声明操作数据的方法 action (普通函数)const addCount = () => count.value++const subCount = () => count.value--return {count,addCount,subCount,}

2.异步实现

export const useChannelStore = defineStore('channel', () => {// 声明数据const channelList = ref([])// 声明操作数据的方法const getList = async () => {// 支持异步const { data: { data }} = await axios.get('http://geek.itheima.net/v1_0/channels')channelList.value = data.channels}// 声明getters相关return {channelList,getList}
})

五、storeToRefs工具函数

当你从 Vuex 或其他状态管理库中获取数据时,通常会遇到解构对象属性后失去响应式的问题。这是因为解构会破坏对象的响应式性质。

在 Vue 3 中,可以通过使用 toRefs 函数来解决这个问题。toRefs 可以将包含响应式数据的对象转换为普通对象,但保留其属性的响应式性。在这里插入图片描述
方法是一个固定的函数,我们不用去更改方法,顶多调用,所以不需要用storeToRefs
在这里插入图片描述
在这里插入图片描述

六、pinia持久化插件

官方文档:https://prazdevs.github.io/pinia-plugin-persistedstate/zh/

1. 安装插件

pinia-plugin-persistedstate npm i pinia-plugin-persistedstate

2. main.js 使用

import persist from 'pinia-plugin-persistedstate' ... app.use(createPinia().use(persist))

3. 开启

store仓库中的第三个配置项中,persist: true 开启

4.其他配置

详情请见官方文档
在这里插入图片描述
在这里插入图片描述
演示:

import { defineStore } from 'pinia'
import { computed, ref } from 'vue'// 定义store
// defineStore(仓库的唯一标识, () => { ... })
export const useCounterStore = defineStore('counter', () => {// 声明数据 state - countconst count = ref(100)// 声明操作数据的方法 action (普通函数)const addCount = () => count.value++const subCount = () => count.value--// 声明基于数据派生的计算属性 getters (computed)const double = computed(() => count.value * 2)// 声明数据 state - msgconst msg = ref('hello pinia')return {count,double,addCount,subCount,msg,}
}, {// persist: true // 开启当前模块的持久化persist: {key: 'hm-counter', // 修改本地存储的唯一标识paths: ['count'] // 存储的是哪些数据}
})

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

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

相关文章

OpenCV 视频处理(关于摄像头和视频文件的读取、显示、保存等等)

1、前言 OpenCV不仅能够处理图像,还能够处理视频 视频是由大量的图像构成的,这些图像是以固定的时间间隔从视频中获取的。这样,就能够使用图像处理的方法对这些图像进行处理,进而达到处理视频的目的。要想处理视频,需…

PCL官方demo的编译使用教程

写在前面 本文内容 PCL官方demo的编译使用教程; 后续对PCL demo中比较常用的算法、应用demo会出专门的博客讲解、拓展; 更多点云基础、算法相关内容请关注专栏: 点云处理基础 点云配准(PointCloud Registration) Open3D点云处理 PCL点云处理 …

Docker本地部署Redis容器结合内网穿透实现无公网ip远程连接

文章目录 前言1. 安装Docker步骤2. 使用docker拉取redis镜像3. 启动redis容器4. 本地连接测试4.1 安装redis图形化界面工具4.2 使用RDM连接测试 5. 公网远程访问本地redis5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主要介绍如何在Ub…

Python与FPGA——局部二值化

文章目录 前言一、局部二值化二、Python局部二值化三、FPGA局部二值化总结 前言 局部二值化较全局二值化难,我们将在此实现Python与FPGA的局部二值化处理。 一、局部二值化 局部二值化就是使用一个窗口,在图像上进行扫描,每扫出9个像素求平均…

探索AI视频创新:Sora的奇迹

探索AI视频创新:Sora的奇迹 随着科技的不断演进,AI视频模型已经成为人工智能领域的一颗新星。在这场技术的风暴中,OpenAI的Sora模型以其杰出的性能和前瞻性的技术脱颖而出,正引领着AI视频领域的全新创新浪潮。 Sora的技术之光 …

【深度学习笔记】优化算法——小批量随机梯度下降

小批量随机梯度下降 到目前为止,我们在基于梯度的学习方法中遇到了两个极端情况: :numref:sec_gd中使用完整数据集来计算梯度并更新参数, :numref:sec_sgd中一次处理一个训练样本来取得进展。 二者各有利弊:每当数据非常相似时&a…

电脑蓝牙在哪里打开?不同系统详解

在现代计算机的多功能性中,蓝牙技术的广泛应用使得我们能够轻松连接各种外部设备,实现无线传输和分享。无论是连接无线耳机、键盘,还是与其他设备快速交换文件,蓝牙在电脑中的角色很重要。然而,对于一些用户而言&#…

centos7 使用rpm包部署filebeat

先决条件参考 虚拟机部署elasticsearch集群-CSDN博客 下载并安装filebeat的rpm包 curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.18-x86_64.rpmrpm -vi filebeat-7.17.18-x86_64.rpm 修改配置文件 配置文件内容可以参考 Repositories…

5G工业网关是什么?

随着科技的飞速发展,5G技术已经逐渐渗透到我们生活的方方面面。而在工业领域,5G工业网关作为连接工业设备与网络的关键组件,正发挥着越来越重要的作用。HiWoo Box其5G工业网关产品以其卓越的性能和稳定性,正助力企业实现数字化转型…

【异常处理】Vue报错 Component template should contain exactly one root element.

问题描述 启动VUE项目后控制台报错: Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.翻译为:组件模板应该只包含一个根元素 查看vue代码&#xff0…

【Redis】Redis的应用场景

📝个人主页:五敷有你 🔥系列专栏:Redis ⛺️稳中求进,晒太阳 Redis的应用场景: 限流 要求10s内只能访问一次 RequestMapping("xian")public String xianLiu(String sign){String sign1 …

前端处理接口直接返回的图片

有时候接口会直接返回图片而不是连接&#xff0c;前端需要处理后才能使用。 首先你可能需要设置responseType: blob’处理响应数据格式。 直接使用 将接口及参数动态拼接成img.src直接使用 <img src"http://test.com/api/img?size50x50" alt"">i…

SpringBoot和Vue 实现增删改查、分页查询、模糊查询

文章目录 前言统一的设置返回类型Vue安装axios&#xff0c;封装request查询所有的用户前端页面请求后端接口编写 条件查询前台请求后台处理请求 分页查询前台发送请求后台接受请求 新增、编辑管理员信息前台后台 删除操作前台请求后台 前言 SpringBoot实现增删改查、分页查询、…

出口内销双循环,诺赛特企业走出发展新路子

在外贸圈这个深水池中&#xff0c;企业的命脉早已与规模、市场地位等因素牢牢绑定。大型外贸企业掌握大资源、大曝光&#xff0c;不用为订单发愁&#xff1b;中型外贸企业&#xff0c;投入相当大的人力、财力、物力&#xff0c;孤注一掷&#xff0c;虎口夺食&#xff1b;小型外…

LLM 大模型框架 LangChain 可观测性最佳实践

LLM&#xff08;Large Language Model&#xff09;大模型的可观测性是指对模型内部运行过程的理解和监控能力。由于LLM大模型通常具有庞大的参数量和复杂的网络结构&#xff0c;因此对其内部状态和运行过程的理解和监控是一个重要的问题。 什么是 LangChain&#xff1f; Lang…

中华财险启动“3·15”金融消费者权益保护教育宣传活动!

2024年中国银行保险业“3•15”消费者权益保护教育宣传活动拉开帷幕。中华财险始终坚持“中华保险•服务中华”&#xff0c;切实履行险企责任&#xff0c;为主动保护金融消费者合法权益&#xff0c;在国家监督管理总局和中华保险集团的指导下&#xff0c;全面开展“3•15” 金融…

吼!原来教师这样发布学生成绩,轻松没烦恼

在教育的日常工作中&#xff0c;发布学生成绩往往是一项繁琐而重要的任务。教师们需要确保每位学生及家长能准确、及时地了解到学习成果。然而&#xff0c;传统的纸质成绩单或逐个通知的方式不仅耗时耗力&#xff0c;还容易出错。那么&#xff0c;有没有一种方法能够让教师们轻…

前端请求的错误处理

全局考虑&#xff1a; 错误需要从三个方面考虑&#xff0c;范围一次减小&#xff1a; 网络层 > 协议层 > 应用层

全球IT外包的趋势与发展

随着全球化进程的不断深化&#xff0c;IT外包已经成为众多企业的关键战略之一。IT外包是将企业的信息技术需求委托给第三方服务提供商&#xff0c;以在成本、效率和核心业务专注方面取得优势。在全球化的大背景下&#xff0c;IT外包的发展呈现出一系列新的趋势。 首先&#xff…

【ChatGPT实践】Claude 3全面升级:多模态+100万Token上下文长度,碾压OpenAI?

最近几天这张图在ai圈很火。 前几天&#xff0c;Anthropic发布了其新一代大语言模型Claude 3系列,包括Claude 3 Opus、Sonnet和Haiku三种规模&#xff0c;分别代表了超大杯、大杯和中杯。其中Sonnet版本在官网可以免费体验&#xff1a;https://claude.ai 最强的Opus版本&#x…