Vue3 组件

文章目录

  • Vue3 组件
    • 概述
    • 根组件
    • 定义和使用组件
    • 样式控制
      • 全局样式
      • 局部样式
      • 深度样式

Vue3 组件

概述

组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构:在这里插入图片描述

根组件

我们传入 createApp 的对象实际上是一个组件,每个应用都需要一个“根组件”,其他组件将作为其子组件。

如果你使用的是单文件组件,我们可以直接从另一个文件中导入根组件。

import { createApp } from 'vue'
// 从一个单文件组件中导入根组件
import App from './App.vue'const app = createApp(App)

定义和使用组件

src/components 目录下定义 HelloWorld 组件:

<script setup >
import HelloWorldChild from "./HelloWorldChild.vue";
</script><template><h3>HelloWorld组件</h3><div>HelloWorld的div</div><p>aaaaaaaaaaaaaaa</p>
</template>

在 App 组件中使用:

<script setup>
import {ref} from "vue"
// 引入HelloWorld组件
import HelloWorld from "./components/HelloWorld.vue";const count = ref(0)
const incrementCount = () => {count.value++
}
</script><template><div><h2>App组件</h2><p>{{ count }}</p><button @click="incrementCount">count++</button><!--使用HelloWorld组件--><HelloWorld/></div>
</template>

效果:

在这里插入图片描述

样式控制

全局样式

在组件中定义的样式,默认是全局有效的。

这是因为App组件的style标签中的样式,在打包后就会生成全局样式,没有额外添加其他的限制条件。因此App组件中的样式既影响了当前组件的div,也影响了子组件的所有div和外部页面中的div。

定义App组件:

<script setup>
import {ref} from "vue"
import HelloWorld from "./components/HelloWorld.vue";const count = ref(0)
const incrementCount = () => {count.value++
}
</script><template><div><h2>App组件</h2><p>{{ count }}</p><button @click="incrementCount">count++</button><HelloWorld/></div>
</template><style>
div {border: 1px solid red;margin: 20px;
}
</style>

定义HelloWorld组件:

<template><h3>HelloWorld组件</h3><div>HelloWorld的div</div>
</template>

效果:

在这里插入图片描述

局部样式

Vue3 的 style 标签中的样式默认是全局的,但如果只针对某个组件内的标签进行样式控制,而不影响外部和内部子组件中标签的样式,可以在 style 标签中添加 scoped 属性,表示局部作用域样式。

scoped 也就是 scoped = true 的简写。

修改子组件样式:

<template><h3>HelloWorld组件</h3><div>HelloWorld的div</div><p>aaaaaaaaaaaaaaa</p>
</template><style scoped>
p {background: #ccc;
}
</style>

查看代码结构:

在这里插入图片描述

scoped原理:

  • 当组件添加 scoped 属性后,该组件内的所有标签都会自动添加 data-v-xxx 的属性,表示唯一标识。
  • 同时 style中定义的样式选择器中也会添加 data-v-xxx 的属性标签,这样局部作用域的样式只能影响当前组件。

深度样式

如果想让局部样式影响子组件,可以使用 Vue3 提供的深度作用域选择器 :deep()

定义 HelloWorldChild 组件:

<template><div><h4>HelloWorldChild组件</h4><p>HelloWorld的p标签</p></div>
</template>

在 HelloWorld 组件中使用:

<script setup>
import HelloWorldChild from "./HelloWorldChild.vue";
</script><template><div><h3>HelloWorld组件</h3><div>HelloWorld的div</div><p>HelloWorld的p标签</p><HelloWorldChild/></div>
</template><style scoped>
div p {background: #ccc;
}div h4 {color: red;
}
</style>

效果:

在这里插入图片描述

因为 HelloWorld 组件使用 scoped 属性,因此 div pdiv h4 的样式没有出现 HelloWorldChild 子组件中。

在 HelloWorld 组件中使用 :deep() 选择器:

<style scoped>
div :deep(p) {background: #ccc;
}div :deep(h4) {color: red;
}
</style>

效果:

在这里插入图片描述

原理:会生成新的属性选择器。

在这里插入图片描述

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

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

相关文章

怎么在家访问公司服务器?

在日常工作中&#xff0c;特别是对信息技术从业者而言&#xff0c;工作往往离不开公司的服务器。他们需要定期访问服务器&#xff0c;获取一些关键的机密文件或数据。如果您在家办公&#xff0c;并且需要处理未完成的任务&#xff0c;同时需要从公司服务器获取所需的数据&#…

IP-Guard对SolidWorks PDM 加密授权说明

SolidWorks PDM 加密授权说明 一、简介 该功能主要实现了,在SolidWorks Enterprise PDM环境下,可以正常"检入"和"检出" 加密文件,并可以正常预览加密文件。 二、操作说明 2.1 设置加密授权 安装客户端后,登录控制台,选择客户端计算机或组右键选择“…

AI 助力游戏开发中的常用算法实现

在当今的游戏开发领域&#xff0c;人工智能&#xff08;AI&#xff09;技术的应用已经成为推动行业发展的关键力量。AI不仅能够提升游戏的智能化水平&#xff0c;还能够增强玩家的沉浸感和游戏体验。随着技术的进步&#xff0c;AI在游戏设计、开发和测试中的应用越来越广泛&…

重现ORA-01555 细说Oracle Undo 数据管理

1. 概述 1.1. Undo 数据应用 undo数据是&#xff1a; 原始的、修改之前的数据副本 是针对更改数据的每个事务处理所捕获的 至少保留到事务处理结束 用于支持&#xff1a; 回退操作 读取一致性查询 闪回查询、闪回事务处理和闪回表 从失败的事务处理中进行恢复 1.2. 事…

Java 集合 Collection、List、Set

一. Collection 单列集合 1. Collection代表单列集合&#xff0c;每个元素(数据)只包含一个值 2. Collection集合特点 ① List系列集合&#xff1a;添加的元素是有序、可重复、有索引。 ArrayList、LinekdList&#xff1a;有序、可重复&#xff0c;有索引 ② Set系列集合&…

wamp php7.4 运行dm8

背景 1、电脑安装了dm8&#xff0c;具体参照官网dm8安装 2、安装好了wamp&#xff0c;我当前的php版本切换成了7.4的&#xff0c;我wamp的安装路径d:\wamp64\ 操作 3、查看phpinfo&#xff0c;如果Thread Safet为enabled&#xff0c;则选择pdo74_dm.dll&#xff0c;否则选择…

linux 系统 mysql :8.4.3 主从复制 教程及运维命令

一、环境准备 硬件配置CPU2 核 CPU内存2 GB 内存硬盘30 GB 硬盘容量外网访问服务器可以访问外网软件环境操作系统Anolis OS 7.9MySQL版本8.4.3 二、服务器清单 Master192.168.153.221Node192.168.153.222 三、安装mysql &#xff08;两台机器都要下载&#xff09; # 下载 …

UE5材质节点Camera Vector/Reflection Vector

Camera Vector相机向量&#xff0c;输出像素到相机的方向&#xff0c;结果归一化 会随着相机移动而改变 Reflection Vector 反射向量&#xff0c;物体表面法线反射到相机的方向&#xff0c;x和y和camera vector相反 配合hdr使用

复合机器人正以其高效、精准、灵活的特点,逐渐在汽车装配线上崭露头角

随着全球汽车制造业的快速发展&#xff0c;汽车装配线已成为衡量企业生产效率和技术水平的重要标准。传统的装配方式往往依赖于大量的人工操作&#xff0c;这不仅效率低下&#xff0c;还面临着质量不稳定、安全隐患等问题。然而&#xff0c;随着智能科技的飞速进步&#xff0c;…

导致启动nacos报错Caused by: java.lang.IllegalStateException: No DataSource set 的两种原因

Java资深小白&#xff0c;不足之处&#xff0c;或者有任何错误欢迎指出。 --蓝紫报错代码如下: C:\Windows\System32>cd D:\nacos-server-2.2.3\nacos\binC:\Windows\System32>d:D:\nacos-server-2.2.3\nacos\bin>startup.cmd -m standalone "nacos is starting…

LinuxUbuntu打开VSCode白屏解决方案

解决方法是 以root权限打开VSCode sudo /usr/share/code/code --no-sandbox --unity-launch

C语言期末复习笔记(下)

目录 九、指针 1.指针变量的定义和初始化 2.间接寻址符* 3.按值调用和按址调用 4.实例 5.函数指针 6.指针变量和其它类型变量的对比 十、字符串 1.字符串常量 2.字符串的存储 3.字符指针 4.字符串的访问和输入/输出 5.字符串处理函数 &#xff08;1&#xff09;str…

1、蓝牙打印机环境搭建

本项目采用stm32f103c8T6芯片&#xff0c;通过库函数实现打印功能&#xff0c;并配置有小程序蓝牙通信上位机。 1、创建文件夹目录 core文件夹存放核心库文件 LIB文件夹存放标准库函数文件 这里可以删减&#xff0c;用不到的可以不要。 obj存放编译后的文件 project存放项目…

多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测

多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测预测效果基本介绍模型背景程序设计参考资料 预测效果 基本介绍 Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入…

Leecode刷题C语言之切蛋糕的最小总共开销②

执行结果:通过 执行用时和内存消耗如下&#xff1a; typedef struct {int *booked;int bookedSize; } MyCalendar;#define MAX_BOOK_SIZE 1001MyCalendar* myCalendarCreate() {MyCalendar *obj (MyCalendar *)malloc(sizeof(MyCalendar));obj->booked (int *)malloc(siz…

力扣-数据结构-10【算法学习day.81】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;建议灵神的题单和代码随想录&#xff09;和记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关…

Vue 全局事件总线:Vue 2 vs Vue 3 实现

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

基于Spring Boot的电影网站系统

一、技术架构 后端框架&#xff1a;Spring Boot&#xff0c;它提供了自动配置、简化依赖管理、内嵌式容器等特性&#xff0c;使得开发者可以快速搭建起一个功能完备的Web应用。 前端技术&#xff1a;可能采用Vue.js、JS、jQuery、Ajax等技术&#xff0c;结合Element UI等组件库…

DeepSpeed训练得到checkpoint如何像Huggingface模型一样评测evaluation?zero_to_fp32.py有什么用?怎么用?

DeepSpeed训练得到checkpoint如何像Huggingface模型一样评测evaluation&#xff1f; 具体步骤 首先看一个样例&#xff1a; 这是我用open-instruct框架&#xff0c;使用DeepSpeed训练1728个steps得到的一个checkpoint。请注意&#xff0c;下文我演示用的例子是基于step_1152&…

最新版Chrome浏览器加载ActiveX控件之CFCA安全输入控件

背景 CFCA安全输入控件用于保证用户在浏览器、桌面客户端、移动客户端中输入信息的安全性&#xff0c;防止运行在用户系统上的病毒、木马等恶意程序入侵窃取用户输入的敏感信息。确保用户输入、本地缓存、网络传输整个流程中&#xff0c;输入的敏感信息不被窃取。广泛应用于银行…