Vue3中插槽, pinia的安装和使用(超详细教程)

1. 插槽

插槽是指, 将一个组件的代码片段, 引入到另一个组件。

1.1 匿名插槽

通过简单的案例来学习匿名插槽,案例说明,在父组件App.vue中导入了子组件Son1.vue,父组件引用子组件的位置添加了一个片段,比如h2标签,然后在子组件选择某个位置通过slot标签引入父组件中定义的代码片段。实操如下图所示:

运行

可以看到正常情况下,应该是先执行“我是父组件的片段”,但是因为进行了插槽,并且<slot>标签在子组件下, 所以子组件在上。如若<slot>标签在上, 那么我是父组件的片段就在上方

1.2 具名插槽

之前写的插槽都是没有任何idname等标识符, 这就会导致我们在一个子组件中, 只能引用一个父组件的片段, 不能使用多次, 或者说从多个父组件引用片段, 所以就需要有插槽名来进行区分

具名插槽需要配合template标签并使用v-slot:插槽名来定义,具体案例实操如下图所示:

运行

具名插槽的简写

我们使用具名插槽的时候格式是这样的: <template  v-slot:插槽名> 片段</template>

v-slot:插槽名 我们可以写成===>  :插槽名

 部分代码

<Son><template :mySlot1><p>这是父组件的片段1</p></template><template v-slot:mySlot2><p>这是父组件的片段2</p></template></Son>

1.3 作用域插槽

前两个讲的都是把父组件的片段引入到子组件,并没有说明到传值, 作用域插槽可以在slot标签通过属性的方式把值传给父组件。

 

2. pinia

由于Vue3是组合式开发,有大量的组件,组件与组件之间虽然可以通过父子传值等操作但是会造成大量的状态散落在组件之间,维护起来非常不方面,Pinia可以很好的解决这些问题。

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

所谓的状态管理库就是用于管理应用程序全局状态的工具。那么什么又是全局状态呢?

以登录为例:

当用户登录成功时,登录成功的这个状态需要保持并维护,那么可以使用pinia来创建一个集中管理用户登录状态的角色,并为其设置过期时间。

2.1 安装和使用

在vscode的终端运行:  npm install pinia

在main.js文件中对pinia进行三步操作 导入,创建,注册. 

通过上述操作,我们的项目就可以使用pinia了。

上面介绍的时候说了pinia是一个库,那么具体帮我们管理组件之间数据和状态的家伙是谁呢,一般管它叫store,接下来我们就来具体应用它。

在项目的src目录下新建一个stores的目录,然后再stores目录下新建一个js文件当做我们存储数据的仓库,课程案例中取名用的是web.js,然后在web.js文件中定义store数据并导出,返回。实操如图所示:

    

2.2  创建store步骤

 1. 导入pinia的defineStore方法

 2. 创建defineStore的对象并暴露

 3. 在方法中传递参数('文件名',()=>{参数名})

import { reactive,ref } from "vue"
import { defineStore } from "pinia"export const useWebStore = defineStore('web',()=>{const web = reactive({title:"Pinia test",url:"bing.com"})const users = ref(100)const addUser = ()=>{users.value++}return {web,users,addUser}
})

最后我们到组件上面去使用定义好的store仓库中的数据以及函数,实操如下图所示:

 2.3 运行结果

代码:

<template><!-- <router-view></router-view> -->
webStore获取到的值: {{ web.state }}
</template><script setup>
import {webStore} from './store/web.js'
const web = webStore()</script>

2.4 小结

先把一些需要用到的共享数据或函数给定义在一个js文件中,然后把该文件文件export出去。在使用的地方先导入,然后创建一个操作对象,通过操作对象进行操作即可。

3. 下一章预告

我们学到现在发现, 这是值虽然说可以获取, 但是不能永久改变, 每次刷新后数值都会变回初始值.

那么下一章讲的就是如何把数据进行持久化存储, 至少说我的代码运行的时候不会变回原来的样子

 

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

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

相关文章

【Redis】AOF日志

目录 1、背景2、工作原理3、核心配置参数4、优缺点5、AOF文件内容 1、背景 AOF&#xff08;Append Only File&#xff09;是redis提供的持久化机制之一&#xff0c;它通过记录所有修改数据库状态的写命令来实现数据库持久化。与RDB&#xff08;快照&#xff09;方式不同&#…

【HTTP】connectionRequestTimeout与connectTimeout的本质区别

今天发现有的伙伴调用第三方 httpclient 的配置中 connectTimeout 和 connectionRequestTimeout 配置的不到 1 S&#xff0c;问了一下他&#xff0c;知不知道这两个参数的意思&#xff0c;他说不知道。那我们今天就来了解一下这两个参数的区别 一、核心概念解析 1.1 connectT…

react中运行 npm run dev 报错,提示vite.config.js出现错误 @esbuild/win32-x64

在React项目中运行npm run dev时&#xff0c;如果遇到vite.config.js报错&#xff0c;提示esbuild/win32-x64在另一个平台中被使用&#xff0c;通常是由于依赖冲突或缓存问题导致的。解决方法是删除node_modules文件夹&#xff0c;并重新安装依赖。 如下图&#xff1a; 解决办…

EMQX开源版安装指南:Linux/Windows全攻略

EMQX开源版安装教程-linux/windows 因最近自己需要使用MQTT&#xff0c;需要搭建一个MQTT服务器&#xff0c;所以想到了很久以前用到的EMQX。但是当时的EMQX使用的是开源版的&#xff0c;在官网可以直接下载。而现在再次打开官网时发现怎么也找不大开源版本了&#xff0c;所以…

Python:操作Excel按行写入

Python按行写入Excel数据,5种实用方法大揭秘! 在日常的数据处理和分析工作中,我们经常需要将数据写入到Excel文件中。Python作为一门强大的编程语言,提供了多种库和方法来实现将数据按行写入Excel文件的功能。本文将详细介绍5种常见的Python按行写入Excel数据的方法,并附上…

vue3中RouterView配合KeepAlive实现组件缓存

KeepAlive组件缓存 为什么需要组件缓存代码展示缓存效果为什么不用v-if 为什么需要组件缓存 业务需求&#xff1a;一般是列表页面通过路由跳转到详情页&#xff0c;跳转回来时&#xff0c;需要列表页面展示上次展示的内容 代码展示 App.vue入口 <script setup lang"…

【JAVA】比较器Comparator与自然排序(28)

JAVA 核心知识点详细解释 Java中比较器Comparator的概念和使用方法 概念 Comparator 是 Java 中的一个函数式接口,位于 java.util 包下。它用于定义对象之间的比较规则,允许我们根据自定义的逻辑对对象进行排序。与对象的自然排序(实现 Comparable 接口)不同,Comparat…

浪潮服务器配置RAID和JBOD

目录 1 配置RAID2 设置硬盘为JBOD模式3 验证结果 1 配置RAID 进入 bios 界面 选择 “高级” - “UEFI-HII配置” 选择 raid 卡 进入 Main Menu 点击 Driver Management&#xff0c;可以查询当前硬盘 返回上一级&#xff0c;点击 Configuration Management - Create virtu…

mongodb管理工具的使用

环境&#xff1a; 远程服务器的操作系统&#xff1a;centOS stream 9; mongoDB version:8.0; 本地电脑 navicat premium 17.2 ; 宝塔上安装了mongoDB 目的&#xff1a;通过本地的navicat链接mongoDB,如何打通链接&#xff0c;分2步&#xff1a; 第一步&#xff1a;宝塔-&…

03-Web后端基础(Maven基础)

1. 初始Maven 1.1 介绍 Maven 是一款用于管理和构建Java项目的工具&#xff0c;是Apache旗下的一个开源项目 。 Apache 软件基金会&#xff0c;成立于1999年7月&#xff0c;是目前世界上最大的最受欢迎的开源软件基金会&#xff0c;也是一个专门为支持开源项目而生的非盈利性…

实景VR展厅制作流程与众趣科技实景VR展厅应用

实景VR展厅制作是一种利用虚拟现实技术将现实世界中的展览空间数字化并在线上重现的技术。 这种技术通过三维重建和扫描等手段&#xff0c;将线下展馆的场景、展品和信息以三维形式搬到云端数字空间&#xff0c;从而实现更加直观、立体的展示效果。在制作过程中&#xff0c;首…

Python爬虫实战:获取天气网最近一周北京的天气数据,为日常出行做参考

1. 引言 随着互联网技术的发展,气象数据的获取与分析已成为智慧城市建设的重要组成部分。天气网作为权威的气象信息发布平台,其数据具有较高的准确性和实时性。然而,人工获取和分析天气数据效率低下,无法满足用户对精细化、个性化气象服务的需求。本文设计并实现了一套完整…

几种超声波芯片的特点和对比

一 CX20106A ZIP - 8 CX20106A ZIP - 8 的核心竞争力在于高性价比、易用性和抗光干扰能力&#xff0c;尤其适合消费电子、短距离工业检测和低成本物联网场景。尽管在距离和精度上不及高端芯片&#xff0c;但其成熟的电路方案和广泛的市场应用&#xff08;如经典红外遥控升级为超…

利用ffmpeg截图和生成gif

从视频中截取指定数量的图片 ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg -vframes 180代表截取180帧, 实测后发现如果视频是60fps,那么会从第10秒截取到第13秒-i input.mp4&#xff1a;指定输入视频文…

系统架构设计师案例分析题——数据库缓存篇

一.核心知识 1.redis和MySQL的同步方案怎么做的&#xff1f; 读数据&#xff1a;先查询缓存&#xff0c;缓存不存在则查询数据库&#xff0c;然后将数据新增到缓存中写数据&#xff1a;新增时&#xff0c;先新增数据库&#xff0c;数据库成功后再新增缓存&#xff1b;更新和删…

什么是智能体?

什么是智能体&#xff1f; 智能体&#xff08;AI Agent&#xff09;是一种能够自主感知环境、做出决策并执行任务的智能实体&#xff0c;其核心依赖大型语言模型&#xff08;LLM&#xff09;或深度学习算法作为“大脑”模块。它通过感知模块&#xff08;如多模态输入&#xff…

企业数字化转型是否已由信息化+自动化向智能化迈进?

DeepSeek引发的AI热潮迅速蔓延到了各个行业&#xff0c;目前接入DeepSeek的企业&#xff0c;涵盖了科技互联网、云服务、电信、金融、能源、汽车、手机等热门领域&#xff0c;甚至全国各地政府机构也纷纷引入。 在 DeepSeek 等国产 AI 技术的推动下&#xff0c;众多企业已经敏锐…

广州卓远VR受邀参加2025智能体育典型案例调研活动,并入驻国体华为运动健康联合实验室!

近日&#xff0c;“2025年智能体育典型案例调研活动”在东莞松山湖成功举办。本次调研活动由国家体育总局体育科学研究所和中国信息通信研究院联合主办&#xff0c;旨在深入贯彻中央关于培育新型消费的战略部署&#xff0c;通过激活智能健身产品消费潜力&#xff0c;加快运动健…

springboot+vue实现鲜花商城系统源码(带用户协同过滤个性化推荐算法)

今天教大家如何设计一个 鲜花商城 , 基于目前主流的技术&#xff1a;前端vue3&#xff0c;后端springboot。学习完这个项目&#xff0c;你将来找工作开发实际项目都会又很大帮助。文章最后部分还带来的项目的部署教程。 系统有着基于用户的协同过滤推荐算法&#xff0c;还有保证…

【android bluetooth 协议分析 02】【bluetooth hal 层详解 3】【高通蓝牙hal主要流程介绍-上】

1. 背景 本节主要讨论 高通 蓝牙 hal 中&#xff0c;的一些流程。 看看你是否都清楚如下问题&#xff1a; 高通芯片电如何控制&#xff1f;串口是在哪里控制的&#xff1f;固件如何下载&#xff1f;初始化流程是怎么样的&#xff1f; 如果你已经对上述讨论的问题&#xff0c…