【Vue】scoped+组件通信+props校验

【scoped作用及原理】

【作用】

默认写在组件中style的样式会全局生效, 因此很容易造成多个组件之间的样式冲突问题

故而可以给组件加上scoped 属性, 令样式只作用于当前组件的标签

作用:防止不同vue组件样式污染

【原理】

给组件加上scoped 属性后, 组件发生如下变化:

1. 组件内所有标签都被添加了一个名为data-v-xxxx(八位随机字符串) 的自定义属性(因此, 每个组件生成的这个属性名都各不相同)

2. scope会用这个属性构成属性选择器, 配合程序员编写的选择器, 形成了一个交集选择器

最终:  必须是当前组件的元素, 才会有这个自定义属性, 从而保证了样式只能作用到当前组件

【组件通信】

一个组件把数据传递给另一个组件

组件化开发中,通过代码拆分和组合化作一系列组件的方式进行开发,这种情况下,组件之间难免需要数据传递,这就需要组件通信

因此, 需要辨别两个组件之间的关系, 从而选择不同的组件方案

【父子组件】

父传子: props自定义属性

子传父: emit自定义事件

【非父子组件】

1.祖先与后代: provide() + inject()

2.兄弟组件: eventBus()

【如何辨别关系】

 父子关系: 谁使用, 谁就是父组件, 谁被使用, 谁就是子组件

【父传子原理】

父组件通过props, 将数据传递给子组件

【子传父】

props是只读的,子组件不能修改父组件传递的数据,

因此可以通过emit方式, 通知父组件,父组件收到通知后自行修改 

图中子传父流程:

1.父组件通过点击砍一刀按钮, 执行onCut函数, onCut函数调用emit方法, emit触发子组件的ccc自定义事件

2.ccc事件触发subPrice函数, 并获得emit方法传过去的值用于subPrice的参数, 从而成功执行砍一刀功能

【props校验】

为组件的 prop 指定验证要求,不符合要求,控制台就会有错误提示,帮助开发者快速发现错误

语法:

也可以写成完整写法, 达成一些更复杂的需求

【组件的 ref/reactive 与props 的区别】

共同点

都可以给组件提供数据

区别

 1.ref/reactive 的数据是组件自己的 → 随便改, 可读可写

2.prop 的数据是外部的, 是父组件提供的 → 不能直接改,遵循单向数据流原则, 子组件若想改, 需要用到子传父的通信规则

单向数据流: 子组件的props数据来源于父组件, 当父组件数据改了, 会影响子组件的props,这个方向只能是父 --> 子 

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

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

相关文章

IDEA 中 Maven Dependencies 出现红色波浪线的原因及解决方法

在使用 IntelliJ IDEA 开发 Java 项目时,尤其是基于 Maven 的项目,开发者可能会遇到 Maven Dependencies 中出现红色波浪线的问题。这种现象通常表示项目依赖未能正确解析或下载,导致代码提示错误、编译失败等问题。本文将详细分析该问题的常…

把二级域名绑定的wordpress网站的指定页面

要将二级域名(如 beijing.wodepress.com)绑定到 WordPress 网站的指定页面(如 wodepress.com/beijing),你需要完成以下步骤: 步骤 1:创建二级域名 登录你的域名控制面板(如 cPanel、阿里云、腾讯云等)。 找到 DNS 管理 或 域名解析 部分。…

FreeRTOS学习01_移植FreeRTOS到STM32(图文详解)

移植FreeRTOS到STM32 1、前言2、获取 STM32 的裸机工程模板3、下载 FreeRTOS V9.0.0 源码4、FreeRTOS文件夹内容简介5、移植FreeRTOS5.1 更改STM32工程模板文件夹名字5.2 提取FreeRTOS最简源码5.3 拷贝 FreeRTOSConfig.h 文件到 user 文件夹5.4 添加 FreeRTOS 源码到工程组文件…

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…

基于Springboot+Vue的办公管理系统

角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…

专业文件比对辅助软件

软件介绍 本文介绍一款用于文件内容对比的计算机辅助工具,支持快速识别不同版本文档间的差异内容。 功能与版本特性 这款工具提供无偿使用授权,技术文档显示其开发历程已达近三十年。程序采用独立封装设计,无需安装即可直接运行。 基础操…

【时时三省】(C语言基础)变量的存储方式和生存期

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 动态存储方式与静态存储方式 从变量的作用域(即从空间)的角度来观察,变量可以分为全局变量和局部变量。 还可以从另一个角度,即从变量值存在…

记录:外扩GPIOD访问报警告

rk提供的rfkill-bt.c驱动访问外扩GPIO输出如下警告: [ 4.694993] ------------[ cut here ]------------ [ 4.694994] WARNING: CPU: 7 PID: 582 at drivers/gpio/gpiolib.c:2805 gpiod_get_raw_value0x58/0xd4 [ 4.695003] Modules linked in: [ 4.69…

LangChain面试内容整理-知识点4:工具(Tool)机制与实现

在LangChain中,工具(Tool)是智能体(Agent)、链(Chain)或LLM可以调用的外部函数接口。可以将Tool理解为LLM可以使用的能力或插件:通过调用工具,LLM能够获取额外的信息或执行特定的动作,比如查询数据库、搜索互联网、做数学计算等comet.compinecone.io。工具赋予了LLM交…

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…

web3-基于贝尔曼福特算法(Bellman-Ford )与 SMT 的 Web3 DeFi 套利策略研究

web3-基于贝尔曼福特算法(Bellman-Ford )与 SMT 的 Web3 DeFi 套利策略研究 如何找到Defi中的交易机会 把defi看做是一个完全开放的金融产品图表,可以看到所有的一切东西;我们要沿着这些金融图表找到一些最优的路径,就…

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…

Go 语言中的内置运算符

1. 算术运算符 注意: (自增)和--(自减)在 Go 语言中是单独的语句,并不是运算符。 package mainimport "fmt"func main() {fmt.Println("103", 103) // 13fmt.Println("10-3…

SQL注入篇-sqlmap的配置和使用

在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…

发立得信息发布系统房屋信息版(php+mysql)V1.0版

# 发立得信息发布系统房屋信息版(phpmysql) 一个轻量级的房屋信息发布平台,基于PHP和MySQL开发,支持用户发布房屋出售/出租信息,以及后台管理功能。 轻量级适合网站开发PHP方向入门者学习,首发版本,未经实际业务流程检…

学习 React【Plan - June - Week 1】

一、使用 JSX 书写标签语言 JSX 是一种 JavaScript 的语法扩展,React 使用它来描述用户界面。 什么是 JSX? JSX 是 JavaScript 的一种语法扩展。看起来像 HTML,但它实际上是在 JavaScript 代码中写 XML/HTML。浏览器并不能直接运行 JSX&…

小智AI+MCP

什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…

基于python大数据的口红商品分析与推荐系统

博主介绍:高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实实在…

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…