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

vue3透传、注入

属性透传

  • 传递给子组件时,没有被子组件消费的属性或事件,常见的如id、class

注意1

  • 1.class、style是合并的,style中如果出现重复的样式,以透传属性为准
  • 2.id属性是以透传属性为准,其他情况透传属性名相同,取值以透传属性为准
APP.vue
<template><div><A style="color: red" id="first" class="app"></A></div>
</template>A组件
<template><div id="second" class="a" style="color:blue; border: 1px solid gray;"><h2>A</h2></div>
</template>最终html
<div id="first" class="a app" style="color: red; border: 1px solid gray;"><h2>A</h2></div>

注意1

注意2

  • 1.多个根节点的时候,可以为需要使用透传属性的根节点绑定v-bind=“$attrs”,来确定透传属性的归属
APP.vue
<template><div><A style="color: red" id="first" class="app"></A></div>
</template>A组件
<template><div ><h2>A1</h2></div><div v-bind="$attrs"><h2>A2</h2></div>
</template>最终html
<div><div><h2>A1</h2></div><div id="first" class="app" style="color: red;"><h2>A2</h2></div>
</div>

注意2

注意3

  • 1.多层透传,可以通过defineOptions({inheritAttrs:false})来实现
  • 2.透传属性使用:
    • 模板中可以直接使用$attrs.id 这种方式
    • 在js中如果在setup语法糖中,可以用useAttrs
    • js中非
<script setup>
import { useAttrs } from 'vue';
const aa = useAttrs()
console.log(aa) //aa是一个proxy对象,在子组件中不能修改
</script>

透传对象

APP.vue
<template><div><A style="color: red" id="first" class="app"></A></div>
</template>A组件
<template><div id="second"><h2>A</h2><B v-bind="$attrs"></B></div>
</template><script setup>
import B from "./B.vue"
import {defineOptions} from 'vue'
defineOptions({inheritAttrs:false
})
</script>B组件
<template><div><h5>B</h5><p>{{ $attrs.id }}</p></div>
</template>最终html
<div><div id="second"><h2>A</h2><div id="first" class="app" style="color: red;"><h5>B</h5><p>first</p></div></div>
</div>

注意3

注入

  • 为了解决参数逐层传递问题

注意

  • 1.上层组件作为提供方,下层组件使用,比如父组件是提供方,子组件使用;也可以提供全局属性
  • 2.provide 和 inject 方法需要在 setup 方法中同步调用
  • 3.修改provide属性的方式最好放在提供方,统一修改
  • 4.注入时,可以提供一个默认值,如果没有该属性的提供方,返回的为默认值
  • 5.provide的数据可以为任意类型,inject后不会改变数据类型
  • 6.可以通过Symbol 来避免注入名冲突

APP.vue

<template><div><A></A></div>
</template>
<script setup>
import {ref,provide} from 'vue'
import A from "./components/A.vue"
const first = ref("first")
const num = ref(1)
function updateFirst(val){first.value = val
}
provide("first",{first,updateFirst
})
provide("num",num)
</script>

A组件

<template><div><h2>A</h2><B></B></div>
</template><script setup>
import { provide, reactive } from "vue";
import B from "./B.vue"
const obj = reactive({name:"zhangsan"
})
provide("obj",obj)
</script>

B组件

<template><div style="border: 1px solid gray;"><h5>B</h5><p>first:{{ first}}</p><p><button @click="updateFirst('inject first')">change first</button></p><p>默认值:{{ defaultTest }}</p><hr/><p>num:{{ num }}--{{ typeof num }}</p><p>num+1: {{ num+1 }}</p></div>
</template>
<script setup>
import { inject } from 'vue';
const {first,updateFirst} = inject("first")
console.log("first:",first)
const defaultTest = inject('defaultTest',"test 默认值")
//ref 数值
const num = inject("num")
//reactive 
const obj = inject("obj")
console.log(obj)
</script>

效果图
console结果

相关文章:

vue3透传、注入

属性透传 传递给子组件时&#xff0c;没有被子组件消费的属性或事件&#xff0c;常见的如id、class 注意1 1.class、style是合并的&#xff0c;style中如果出现重复的样式&#xff0c;以透传属性为准2.id属性是以透传属性为准&#xff0c;其他情况透传属性名相同&#xff0c…...

数模原理精解【9】

文章目录 混合高斯分布概述定义性质参数估计计算Julia实现 详述定义原理 核心参数1. 均值&#xff08;Means&#xff09;2. 协方差矩阵&#xff08;Covariance Matrices&#xff09;3. 权重&#xff08;Weights&#xff09;4. 聚类个数&#xff08;高斯模型个数&#xff0c;K&a…...

Java中的linkedList类及与ArrayList的异同

继承实现关系 public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable 由于涉及的类过多&#xff0c;画起来过于繁琐&#xff0c;这里只展示最外层的继承实现关系 可以看到它是…...

【精选】文件摆渡系统:跨网文件传输的安全与效率之选

文件摆渡系统可以解决哪些问题&#xff1f; 文件摆渡系统&#xff08;File Shuttle System&#xff09;主要是应用于不同网络、网段、区域之间的文件数据传输流转场景&#xff0c; 用于解决以下几类问题&#xff1a; 文件传输问题&#xff1a; 大文件传输&#xff1a;系统可…...

tkinter 电子时钟 实现时间日期 可实现透明 无标题栏

下面是一个使用tkinter库实现的简单电子时钟的例子&#xff0c;可以显示当前的日期和时间&#xff0c;并且可以设置窗口为透明且无标题栏。 import tkinter as tk import timedef update_time():current_time time.strftime("%Y-%m-%d %H:%M:%S")label.config(text…...

【hot100-java】【除自身以外数组的乘积】

R8-普通数组篇 印象题&#xff0c;计算前缀&#xff0c;计算后缀&#xff0c;计算乘积。 class Solution {public int[] productExceptSelf(int[] nums) {int n nums.length;int[] prenew int[n];pre[0]1;for (int i1;i<n;i){pre[i]pre[i-1]*nums[i-1];}int[] sufnew int[…...

【Python机器学习】循环神经网络(RNN)——审察模型内部情况

Keras附带了一些工具&#xff0c;比如model.summary()&#xff0c;用于审察模型内部情况。随着模型变得越来越复杂&#xff0c;我们需要经常使用model.summary()&#xff0c;否则在调整超参数时跟踪模型内部的内容的变化情况会变得非常费力。如果我们将模型的摘要以及验证的测试…...

智能语音交互:人工智能如何改变我们的沟通方式?

在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面。其中&#xff0c;智能语音交互作为AI技术的一个重要分支&#xff0c;正以前所未有的速度改变着我们的沟通方式。从智能家居的控制到办公自动化的应用&#xff0c;再到日常交…...

vue3中动态引入本地图片的两种方法

方法一 <img width"10" height"10":src"/src/assets/nncs2/jiantou${index 1}.png" alt"" /> 推荐 简单好用 方法二 const getImg index > {const modules import.meta.glob(/assets/nncs2/**/*.{png,svg,jpg,jpeg}, { …...

Linux网络——socket编程与UDP实现服务器与客户机通信

文章目录 端口号TCP/UDP网络字节序socket的常见APIUDP实现服务器与客户机通信服务器客户机运行效果如下 端口号 我们说即便是计算机网络&#xff0c;他们之间的通信也仍然是进程间通信 那么要如何在这么多计算机中&#xff0c;找到你想要的那个进程呢 在网络中标识的唯一的计…...

大型语言模型中推理链的演绎验证

大语言模型&#xff08;LLMs&#xff09;在执行各种推理任务时&#xff0c;由于引入了链式推理&#xff08;Chain-of-Thought&#xff0c;CoT&#xff09;提示&#xff0c;显著受益。尽管CoT使模型产生更全面的推理过程&#xff0c;但其对中间推理步骤的强调可能会无意中引入幻…...

openharmony 应用支持常驻和自启动

本文环境: devEco studio 版本 4.0.0.600 SDK版本:3.2.12.5 full SDK 应用模型:Stage 功能简介: OpenHarmony支持包含ServiceExtensionAbility类型模块的应用配置常驻和自启动。 关于ServiceExtensionAbility其他的介绍可以参考官网:ServiceExtensionAbility(仅对…...

Winform中引入WPF控件后键盘输入无响应

引言 Winform中如何引入WPF控件的教程很多&#xff0c;对于我们直接通过ElementHost引入的直接显示控件&#xff0c;它是可以响应键盘输入消息的&#xff0c;但对于在WFP中弹出的窗体来说&#xff0c;此时是无法响应我们的键盘输入的。我们需要给它使能键盘输入。 1、使能键盘…...

多线程——死锁

死锁 在Java中使用多线程&#xff0c;就会有可能导致死锁问题。死锁会让程序一直卡住&#xff0c;程序不再往下执行。 我们只能通过中止并重启的方式来让程序重新执行。 这是我们非常不愿意看到的一种现象&#xff0c;我们要尽可能避免死锁的情况发生&#xff01; 死锁的原因…...

链路追踪可视化利器之火焰图

随着现代化技术的发展&#xff0c;为了能够保证 IT 系统的稳定性、高扩容性&#xff0c;企业往往采用分布式的方式来构建 IT 系统。但也正因为如此&#xff0c;IT 系统中涉及到的服务和组件可能被分布在不同的服务器、数据中心甚至不同的地理位置&#xff0c;这导致应用发生故障…...

C语言 ——— 条件编译指令实际用途

目录 前言 头文件被包含的方式 嵌套文件包含 使用条件编译指令规避头文件多次包含 还有一个编译指令&#xff0c;同样能做到以上功能 前言 条件编译指令多用于对头文件的定义和判断以及删除 头文件被包含的方式 本地文件包含&#xff08;也就是自己创建的头文件&#xff…...

备战软考Day01-计算机系统

1.数值及其转化 1.数值转化&#xff08;十进制&#xff09; 2.十进制推广 3.进制转化 4.数据表示 1.原码 2.反码 3.补码 4.移码 5.定点数 就是小数点的位置固定不变的数。小数点的位置通常有两种约定方式&#xff1a;定点整数(纯整数&#xff0c;小数点在最低有效数值位之后…...

从C语言过渡到C++

&#x1f4d4;个人主页&#x1f4da;&#xff1a;秋邱-CSDN博客☀️专属专栏✨&#xff1a;C &#x1f3c5;往期回顾&#x1f3c6;&#xff1a;单链表实现&#xff1a;从理论到代码-CSDN博客&#x1f31f;其他专栏&#x1f31f;&#xff1a;C语言_秋邱的博客-CSDN博客 目录 ​…...

Docker 的安装和使用

参考资料&#xff1a; 通俗易懂了解什么是docker?Docker 教程 | 菜鸟教程Ubuntu 22.04 安装 DockerDocker 超详细基础教程WSL2 支持 systemctl 命令systemd 和 systemctl 是什么&#xff1f;使用正确的命令重启 WSL 子系统Ubuntu 修改源镜像方法Docker 中出现 ‘/etc/resolv.…...

鸿蒙轻内核A核源码分析系列七 进程管理 (2)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 轻内核A核源码分析系列一 数据结构-双向循环链表 轻内核A核源码分析系列二 数据结构-位图操作 轻内核A核源码分析系列三 物理内存&#xff08;1&#xff0…...

关于TypeScript使用讲解

TypeScript讲解 安装环境 1.安装node js 配置环境变量 2.在终端中 运行 npm i -g typescript typescript: 用于编译ts代码 提供了 tsc命令 实现了将 TS>>>> JS转换 验证: tsc -v 编译并运行 TS代码 1.创建ts文件&#xff08;TS文件为后缀名的文件&#xff0…...

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目&#xff1a; 题解&#xff1a; static const int MASK1 1 << 7; static const int MASK2 (1 << 7) (1 << 6);bool isValid(int num) {return (num & MASK2) MASK1; }int getBytes(int num) {if ((num & MASK1) 0) {return 1;}int n 0;in…...

Netty权威指南:Netty总结-编解码与序列化

第四章 TCP粘包/拆包问题 4.1 TCP 粘包/拆包 TCP是流协议&#xff0c;也就是没有界限的的一串数据&#xff0c;底层并不知道上层业务数据的具体含义&#xff0c;也就是说一个完整的包可能会被拆分成多个包进行发送&#xff0c;也可能把几个小包封装成一个大的数据包发送。这就…...

FIDAVL:基于视觉语言模型的假图像检测与归因 !

FIDAVL:基于视觉语言模型的假图像检测与归因 &#xff01; 这份完整版的大模型 AI 学习资料已经上传CSDN&#xff0c;朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 作者提出了FIDAVL&#xff1a;使用视觉语言模型进行虚假图像检测。FIDAVL是一…...

如何通过海外云手机提升运营效率

随着技术的不断进步&#xff0c;市场上出现了越来越多的提高跨国电商运营效率的应用&#xff0c;海外云手机就是其中一个。海外云手机的优势体现在多个方面&#xff0c;那么如何通过使用海外云手机来提升运营效率&#xff1f;可以从以下几个方面了解。 首先&#xff0c;海外云手…...

数据库4个范式的说明

在数据库设计中&#xff0c;范式&#xff08;Normal Form&#xff09;用于消除冗余和异常&#xff0c;确保数据一致性。以下是第一范式、第二范式、第三范式和BCNF&#xff08;Boyce-Codd Normal Form&#xff0c;即第四范式&#xff09;的示例说明&#xff1a; 1. 第一范式&a…...

Excel怎么截图?快速捕捉工作表的多种方法

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f4f8; 在日常工作中&#xff0c;我们经常需要对Excel工作表进行截图&#xff0c;无论是为了记录数据、制作演示还是进行数据对比。今天&#xff0c;我们就来学习几种在Excel中截图的方法以及它们的快捷键。 一、使…...

MyBatis动态SQL标签总结、开发手册、高阶用法(动态SQL、OGNL、批量操作、片段重用、 SQL 组合、 执行优化、嵌套查询与延迟加载)

MyBatis提供了一个非常强大的动态SQL功能&#xff0c;它使用了一组XML标签来帮助我们根据不同条件生成动态SQL。动态SQL的设计让开发者可以根据业务需求&#xff0c;灵活地构建SQL查询语句。以下是MyBatis动态SQL标签的总结。 动态SQL标签说明特点<if>条件判断语句&…...

出处不详 取数游戏

目录 取数游戏题目描述背景输入输出数据范围 题解解法优化 打赏 取数游戏 题目描述 背景 两人将 n n n个正整数围成一个圆环&#xff0c;规则如下&#xff1a; 第一名玩家随意选取数字&#xff1b;第二名玩家从与第一名玩家相邻的两个数字中选择一个&#xff1b;而后依次在…...

拉取ros2_control_demos存储库

目录 克隆存储库 方法 1: 使用 git clone 和 rosdep 安装依赖 方法 2: 使用 vcs 工具管理多个存储库 区别总结 rosdep 和 APT 的关系 网络问题 安装依赖 克隆存储库 方法 1: 使用 git clone 和 rosdep 安装依赖 下载存储库&#xff1a; mkdir -p ~/ros2_ws/src cd ~/ros…...