当前位置: 首页 > news >正文

Vue 全局状态管理新宠:Pinia实战指南

在这里插入图片描述

文章目录

  • 前言
  • 全局状态管理
    • 基本步骤:
    • pinia


前言

    随着Vue.js项目的日益复杂,高效的状态管理变得至关重要。Pinia作为Vue.js官方推荐的新一代状态管理库,以其简洁的API和强大的功能脱颖而出。本文将带您快速上手Pinia,从安装到应用,轻松实现Vue.js项目的全局状态管理,提升开发效率和项目可维护性。


全局状态管理

基本步骤:

1.npm install pinia
2.main.js 引入注册
3.src下创建对应状态管理目录store(名不能改变)
4.store中定义user.js
5.在vue中使用

pinia

  • Pinia 是 Vue.js 的一个状态管理库,它提供了一种更简单、更直观的方式来管理 Vue 应用的状态。
  • Pinia是 Vue 的存储库,它允许您跨组件/页面共享状态,与vuex功能一样。

1、安装:
npm install pinia

2、main.js 引入注册:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import Axios from 'axios'
// 第一步:引入pinia
import {createPinia} from 'pinia'var app = createApp(App)
app.config.globalProperties.$axios = Axios// 第二步:创建pinia
const pinia = createPinia()
// 第三步:向vue中注册安装pinia
app.use(pinia)app.use(router).mount('#app')

3、src下创建对应状态管理目录store(名不能改变),并定义user.js:

  • 在store中创建对应状态管理对象,定义user.js
    在这里插入图片描述
  • Store 是使用 defineStore() 定义的,并且它需要一个唯一名称,作为第一个参数传递
  • 这个 name,也称为 id,是必要的,Pinia 使用它来将 store 连接到 devtools。 将返回的函数命名为 use… 是跨可组合项的约定
  • // defineStore('user',{}) user就是这个仓库的名称name

4、pinia在vue中使用:

1) 引入,在需要的vue文件中,引用仓库并获取对象:

  • import {userStore} from '../store/user'
  • let userstore = userStore();

2) 取值方式:

  • userstore.userid

3) 直接修改数据:

  • userstore.userid = x

4) $patch方法修改,修改相应的属性值,修改多个值,状态会统一执行一次:

//使用$patch方法  以对象的形式一次性修改
const editAll = () => {userInfoStore.$patch({username: "鸭蛋",age: 21,});

在这里插入图片描述

相关文章:

  • 网络编程:使用UDP实现数据帧的接收
  • AI安全研究滞后?清华专家团来支招
  • VMamba: Visual State Space Model论文笔记
  • [PyTorch]:加速Pytorch 模型训练的几种方法(几行代码),最快提升八倍(附实验记录)
  • 入门PHP就来我这(纯干货)05
  • 【CSS】什么是CSS的columns属性
  • 全面了解机器学习
  • 数据结构 - C/C++ - 队列
  • 《刺客信条:英灵殿》找不到emp.dll文件的多种解决方法,亲测有效
  • java 代码块
  • 【C++】main函数及返回值深度解析
  • antd中Select大数据分页触底刷新处理优化
  • 虚拟纪念展馆建设的重大意义:重新定义纪念活动的未来
  • C++——探索智能指针的设计原理
  • 深入Ruby缓存:掌握Memcached的使用艺术
  • python3.6+scrapy+mysql 爬虫实战
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Bytom交易说明(账户管理模式)
  • cookie和session
  • js操作时间(持续更新)
  • node 版本过低
  • spring + angular 实现导出excel
  • Sublime text 3 3103 注册码
  • 编写高质量JavaScript代码之并发
  • 构建工具 - 收藏集 - 掘金
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #Ubuntu(修改root信息)
  • (poj1.3.2)1791(构造法模拟)
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十八)三元表达式和列表解析
  • (实战篇)如何缓存数据
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)Oracle存储过程编写经验和优化措施
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NetCore 如何动态路由
  • .NET基础篇——反射的奥妙
  • .stream().map与.stream().flatMap的使用
  • @Builder用法
  • @RequestMapping处理请求异常
  • @selector(..)警告提示
  • [1525]字符统计2 (哈希)SDUT
  • [bzoj1912]异象石(set)
  • [C++]:for循环for(int num : nums)
  • [C++基础]-入门知识
  • [CISCN2019 华东北赛区]Web2
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本
  • [flutter]一键将YAPI生成的api.json文件转为需要的Dart Model类的脚本
  • [iOS]Win8下iTunes无法连接iPhone版本的解决方法
  • [JS入门到进阶] 哎,被vite小坑了一波,大家记得配置build.cssTarget为‘chrome61‘