Vue solt插槽(v2v3)实战详解

devtools/2024/9/23 3:32:29/

在 Vue.js 中,<slot> 是用于在父组件中传递内容到子组件的一种机制。它允许你在父组件中定义一些内容,并在子组件中使用 <slot> 标签来插入这些内容,从而实现父子组件之间的内容传递和复用。

1.匿名插槽

使用 <slot> 插槽接收父组件传递的内容

父组件

<template><div><h1>父组件</h1><p>这是父组件的内容。</p><ChildComponent></ChildComponent></div>
</template>

子组件

<template><div><h2>子组件</h2><!-- 使用 <slot> 插槽接收父组件传递的内容 --><slot></slot></div>
</template>

2.具名插槽

通过 <slot> 标签的 name 属性来区分不同的插槽

父组件

<template><div><h1>父组件</h1><!-- 使用命名插槽传递内容 --><ChildComponent><template v-slot:title><h2>子组件标题</h2></template><template v-slot:content><p>这是子组件的内容。</p></template></ChildComponent></div>
</template>

子组件

<template><div><h2>子组件</h2><!-- 使用命名插槽接收父组件传递的内容 --><slot name="title"></slot><slot name="content"></slot></div>
</template>

在 Vue 中,slot="footer"v-slot:title 的区别:

  1. slot 属性:
    • slot="footer" 是在父组件中使用的一种简写语法,用于给具名插槽(Named Slots)命名。
    • 这种简写语法用于传递内容到子组件中具有特定名称的插槽,比如给子组件中名为 "footer" 的插槽传递内容。
  2. v-slot 指令:
    • v-slot:title 是 Vue 2.6.0 版本引入的一种新语法,用于在父组件中为具名插槽分配模板内容。
    • 这种语法可以用于给具名插槽(Named Slots)分配内容,它提供了更加灵活的方式来管理插槽内容。

在 Vue 2.x 中,v-slot 是用于具名插槽的分配语法。在 Vue 3.x 中,v-slot 被替换为 #,成为了更加简洁的写法。

3.作用域插槽

子组件可以通过 slotProps 访问和使用这些数据

父组件

<template><div><h1>父组件</h1><!-- 使用作用域插槽传递数据 --><!-- v-slot:default="slotProps"等价于v-slot="slotProps",只是语义不同 , 简写用法使用es6的解构语法v-slot="{message}" --><ChildComponent v-slot:default="slotProps"><p>{{ slotProps.message }}</p></ChildComponent></div>
</template>

子组件

<template><div><h2>子组件</h2><!-- 使用作用域插槽接收父组件传递的数据 --><slot :message="message"></slot></div>
</template><script>
export default {data() {return {message: '这是子组件的数据'};}
};
</script>

v-slot="slotProps"v-slot:default="slotProps" 有什么区别:

在 Vue 中,v-slot="slotProps"v-slot:default="slotProps" 都是用于作用域插槽(Scoped Slots)的语法

实际上,这两种写法在功能上是等价的,它们都可以用于定义作用域插槽并传递数据到子组件。区别主要在于语法上的不同:

  • v-slot="slotProps"v-slot 的简写语法,用于定义默认插槽。
  • v-slot:default="slotProps" 明确指定了插槽名称为 default

在实际开发中,两种写法可以根据个人习惯和代码风格选择使用。通常情况下,如果只有一个作用域插槽并且不需要指定特定的插槽名称,可以使用 v-slot="slotProps" 的简写方式,简洁且易读。如果需要指定具名插槽的名称,可以使用 v-slot:default="slotProps" 的方式来明确指定插槽名称。

4.在Vue3.x中的简写写法

具名插槽的分配

<ChildComponent><template #title><h2>This is the title</h2></template>
</ChildComponent>

具名插槽的传递

<ChildComponent><p #footer>This is the footer content.</p>
</ChildComponent>


http://www.ppmy.cn/devtools/42533.html

相关文章

PHP在线制作表白网源码

PHP在线制作表白网源码&#xff0c;送女友个惊喜吧&#xff0c;无数据库&#xff0c;上传就能用&#xff0c;后台/admin&#xff0c;账号密码都是admin 百度网盘&#xff1a;https://pan.baidu.com/s/1rbD2_8IsP9UPLK-cdgEXfA?pwdre59

C++ RPC ORM 高速解析

支持所有常用编程语 https://capnproto.org/GitHub - capnproto/capnproto: Capn Proto serialization/RPC system - core tools and C library https://capnproto.org/capnproto-c-win32-1.0.2.zip 常用命令&#xff1a; capnp help capnp compile -oc myschema.capn…

推荐一个可以作为web APP hub的网站

推荐一个可以作为web APP hub的网站 Web APP的一个优点是轻量&#xff0c;往往是一个网络地址对应一个APP&#xff0c;主打一个简便快捷&#xff0c;但是缺点是仅能完成相对简单的任务&#xff0c;完成复杂的任务可能需要多个APP联合作用&#xff0c;或者期望把经常使用的APP归…

升级openssl与python问题

1、下载与安装 wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1t.tar.gz tar -zxvf openssl-1.1.1t.tar.gz cd openssl-1.1.1t/ ./config --prefix/usr/local/ssl make sudo make install 2、完成后添加软链接 mv /usr/bin/openssl /usr/bin/oldope…

Flutter 中的 WidgetInspector 小部件:全面指南

Flutter 中的 WidgetInspector 小部件&#xff1a;全面指南 Flutter 的 WidgetInspector 是一个强大的工具&#xff0c;它允许开发者在运行时检查和操作他们的 widget 树。这在调试复杂的布局和 widget 结构时尤其有用。本文将为您提供一个全面的指南&#xff0c;帮助您了解如…

ECMAScript 详解

ECMAScript 是一种脚本语言规范&#xff0c;由欧洲计算机制造商协会&#xff08;ECMA&#xff09;通过 ECMA-262 标准化&#xff0c;广泛用于客户端脚本编程。它最著名的实现是 JavaScript&#xff0c;主要用于 Web 开发。以下是 ECMAScript 的详细解析&#xff1a; ### 1. 历…

【C++】智能指针 裸指针 悬挂指针

1、智能指针 智能指针是 C 标准库提供的模板类&#xff0c;用于自动管理动态分配的内存&#xff0c;以避免内存泄露和其他与裸指针相关的问题。智能指针通过在对象生命周期结束时自动释放其指向的内存来实现资源管理。C 标准库中最常用的智能指针包括 std::unique_ptr、std::s…

安卓手机APP开发__Wi-Fi扫描概述

安卓手机APP开发__Wi-Fi扫描概述 目录 概述 Wi-Fi的扫描过程 限制 权限 Android 8.0 and Android 8.1: Android 9: Android 10 (API 级别 29) 和 更高版本: 扫描频率的限制 Android 8.0 and Android 8.1: Android 9: Android 10 and higher: 概述 你能使用Wi-Fi的…