Vue学习笔记(Snippets、Pinia)

ops/2024/10/15 19:39:33/

一、Vue3好用的VSCode插件

Vue VSCode Snippets

作用:在vue3文件中输出v3,选择模板后,可生成模板代码

自定义模板的方法:

 

 

打开vue.json,修改模板

 

 

二、Pinia

1.简介

Pinia是一个轻量级的状态管理库

 Pinia官网

       Pinia | The intuitive store for Vue.js

状态管理库是用于管理应用程序全局状态的工具

以登录为例:

使用Pinia创建一个userStore来集中管理用户的登录状态和过期时间

当用户登录成功时:

设置userStore中用户的登录状态为已登录,并设置过期时间

当用户退出登录时:

修改userStore中用户的登录状态为未登录,并删除过期时间

Pinia 和 组件通信 的区别

虽然Vue提供的父传子、子传父以及跨组件通信也可以用于状态共享,

但在大型项目中,随着组件数量的增加,会导致以下问题:

1.组件之间传递大量的props,会使项目变得非常繁琐和难以维护

2.非父子组件间过度依赖provide/inject,使状态散落在各个组件之间

2.安装 Pinia 以及定义和使用 Store

 

在main里面加入

import { createApp } from 'vue'//导入Pinia的createPinia方法,用于创建Pinia实例(状态管理库)
import { createPinia } from 'pinia'import App from './App.vue'//创建一个Pinia实例,用于在应用中集中管理状态(store)
const pinia = createPinia()//createApp(App).mount('#app')
const app = createApp(App)
app.use(pinia) //将Pinia实例注册到Vue应用中
app.mount('#app')

在src目录下,新建stores文件夹,再新建web.js文件

import { reactive, ref } from 'vue'
import { defineStore } from 'pinia'/*定义一个基于 Pinia 的 Store第1个参数 web 是 useWebStore 在应用中的唯一标识符(ID)第2个参数是 Setup函数 或 Option对象
*/
export const useWebStore = defineStore('web', () => {//定义一个响应式对象,存储网站信息const web = reactive({title: "编程",url: "ruicode.com"})//定义一个响应式引用,存储用户数const users = ref(1000)//定义方法const userAdd = () => {users.value++}return {web,users,userAdd}
})

再修改App.vue

<script setup>import { useWebStore } from './stores/web.js'const webStore = useWebStore()console.log("webStore.web:",webStore.web)console.log("webStore.users:",webStore.users)
</script><template>{{ webStore.web.url }}{{ webStore.users }}<button @click="webStore.userAdd" >添加用户</button>
</template><style scoped></style>

3.Pinia 持久化存储插件 

1.安装插件

 2.修改mian.js

从 pinia-plugin-persistedstate 模块中导入 piniaPluginPersistedstate

将插件添加到 pinia 实例上

import { createApp } from 'vue'//导入Pinia的createPinia方法,用于创建Pinia实例(状态管理库)
import { createPinia } from 'pinia'//从 pinia-plugin-persistedstate 模块中导入 piniaPluginPersistedstate
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'import App from './App.vue'//创建一个Pinia实例,用于在应用中集中管理状态(store)
const pinia = createPinia()//将插件添加到 pinia 实例上
pinia.use(piniaPluginPersistedstate)//createApp(App).mount('#app')
const app = createApp(App)
app.use(pinia) //将Pinia实例注册到Vue应用中
app.mount('#app')

在web.js的Store中添加

{//持久化存储到 localStorage 中persist: true
})

 

 

 

 

 

 

 

 


http://www.ppmy.cn/ops/126082.html

相关文章

如何查看是否是ip转发?

一、什么是ip转发 ip转发指的是路由器或者其他网络设备把接受的ip数据包从一个接口转发到另一个ip的过程。在ip转发的过程中&#xff0c;如果某个设备接收到某个数据包时发现该设备不是此数据包的最终目的地&#xff0c;它就会根据路由表中的信息将此数据包转发到下一个适合的…

python——pyecharts数据可视化堆叠面积图

堆叠面积图具有以下几个重要作用&#xff1a; 一、展示总量与分量关系 堆叠面积图可以清晰地展示多个数据系列的总量以及各个分量在总量中所占的比例。通过不同颜色或阴影的区域&#xff0c;你可以直观地看出每个数据系列对整体的贡献程度。例如&#xff0c;在分析公司不同业…

【LeetCode】动态规划—1964. 找出到每个位置为止最长的有效障碍赛跑路线(附完整Python/C++代码)

动态规划—1964. 找出到每个位置为止最长的有效障碍赛跑路线 前言题目描述基本思路1. 问题定义2. 理解问题和递推关系动态规划递推公式&#xff1a;公式推导&#xff1a;伪代码&#xff1a;核心思想&#xff1a; 3. 解决方法动态规划 二分查找 4. 进一步优化5. 小总结 Python代…

ASP.NET Core8.0学习笔记(二十一)——EFCore关系配置API

一、关系配置API概述 当我们需要指定一个字段作为外键&#xff0c;而这个外键又不符合以上四种约定时&#xff0c;就需要在IEntityTypeConfiguration实现类&#xff08;对应的配置类&#xff09;中使用Fluent API直接配置外键。理论上可以通过API直接指定一个属性&#xff0c;…

GC 算法

垃圾回收主要在&#xff1a;堆区和方法区 # 标记阶段&#xff1a;引用计数算法 在堆里存放着几乎所有的 Java 对象实例&#xff0c;在 GC 执行垃圾回收之前&#xff0c;首先需要区分出内存中哪些是存活对象&#xff0c;哪些是已经死亡的对象。只有被标记为已经死亡的对象&…

专题:贪心算法(已完结)

1.分发饼干 方法一&#xff1a;用最大的胃口 找到最大的饼干&#xff08;先遍历胃口&#xff09; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 主要思路 用最大的饼干找最大的胃口sort(g.begin(),g.end());so…

YoloDotNet 在工业检测中的应用详解

文章目录 一、数据收集与标注二、模型选择与训练三、检测流程设计四、结果评估与优化五、与工业生产线集成一、数据收集与标注 在工业检测中,首先需要收集大量的相关工业产品图像数据。这些数据应涵盖不同的产品类型、缺陷种类以及各种可能的生产状态。例如,对于电子产品的检…

MySQL安装与配置详细教程

MySQL 是一个广泛使用的开源数据库管理系统&#xff0c;适用于各类应用程序。本文将详细介绍如何在 Linux&#xff08;如 Ubuntu&#xff09;、Windows 系统上安装和配置 MySQL&#xff0c;以帮助你快速搭建起一个稳定的数据库环境。 一、在 Ubuntu 系统上安装 MySQL 1. 更新…