vue2 ---- 插槽

news/2024/11/8 3:11:24/

什么是插槽

        子组件提供给父组件的占位符,用 slot 元素来表示,

        父组件可以在这个占位符里面填充各种模板代码。      


1. 匿名插槽:

        父组件引入子组件,在子组件内留 标签,

        就可以在父组件中的子组件标签中写入内容。

        例:

                父组件:

<template><div><h1>父组件</h1><!-- 子组件标签 --><Comp><p>匿名插槽</p></Comp></div>
</template><script>import Comp from "./子组件.vue"export default {components:{Comp,},data(){return {};},}
</script><style lang="less" scoped></style>

        子组件:

<template><div><p>子组件</p><--  slot 占位符  --><slot></slot>   </div>
</template><script>export default {}
</script><style lang="less" scoped></style>

2. 具名插槽:

        子组件内的 标签添加 name 属性,

        父组件写入内容时,在子组件标签内用 v-slot:插槽名称 属性,便可将数据放在指定位置 ( 简写 #插槽名称 )

        例:

                父组件:

<template><div><h1>父组件</h1><!-- 子组件标签 --><Comp>    <p>匿名插槽</p><template v-slot:top><div >具名插槽-top</div></template><template #footer><div >具名插槽-footer</div></template></Comp></div>
</template><script>import Comp from "./子组件.vue"    export default {data(){return {};},components:{Comp,},}
</script><style lang="less" scoped></style>

                子组件:

<template><div><p>子组件</p><slot name="top"> 具名插槽 </slot> <slot></slot><slot name="footer"> 具名插槽  </slot>    </div>
</template><script>export default {}
</script><style lang="less" scoped></style>

3. 作用域插槽:

        能传递数据,父组件可以接收子组件传递的数据

        格式:v-slot : 插槽名称 = “ props ”

        例:

                父组件:

<template><div><h1>父组件</h1><Comp><p>匿名插槽</p><!-- 子组件传递的值存入自定义变量 --><template v-slot:top="props"> <div><p>具名插槽-top</p></div><!-- 通过自定义变量引出子组件传入数据 --><p>tex1: {{ props.text1 }}</p>  </template><template #footer="NewProps"><div>具名插槽-footer</div><p>tex2: {{ NewProps.text2 }}</p></template></Comp></div>
</template><script>
import Comp from "./子组件.vue";
export default {data() {return {};},components: {Comp,},
};
</script><style lang="less" scoped></style>

                子组件:

<template><div><p>子组件</p><!-- 单向绑定数据传值 --><slot name="top" :text1="1"></slot><slot></slot><slot name="footer" :text2="2"></slot></div>
</template><script>
export default {data() {let arr = 3;},
};
</script><style lang="less" scoped></style>

注意:

        1. vue3 只能用 v-slot

        2. v-slot 是从 2.6.0+ 开始使用在此之前的格式为:

 <template slot="top" slot-scope="props"> <div><p>具名插槽-top</p></div><!-- 通过自定义变量引出子组件传入数据 --><p>tex1: {{ props.text1 }}</p>  
</template>

4. 动态插槽:

        格式: v-slot : [ 变量插槽名 ]

        简写: #[ 变量插槽名 ]

        例:

                父组件:

<template><div><h1>父组件</h1><Comp><p>匿名插槽</p><!-- 动态插槽名 --><template v-slot:[name]="props"> <div><p>具名插槽-top</p></div><!-- 通过自定义变量引出子组件传入数据 --><p>tex1: {{ props.text1 }}</p>  </template><template #footer="NewProps"><div>具名插槽-footer</div><p>tex2: {{ NewProps.text2 }}</p></template></Comp></div>
</template><script>
import Comp from "./子组件.vue";
export default {data() {return {name:"top"   // 定义一个变量};},components: {Comp,},
};
</script><style lang="less" scoped></style>


http://www.ppmy.cn/news/731957.html

相关文章

不懂就要问,怎么辨别抖音手机卡真假?

当我们在刷抖音时&#xff0c;总能看到一些关于手机卡/流量卡的广告&#xff0c;这些套餐看起来都是超级便宜&#xff0c;有的套餐9元180G&#xff0c;有的套餐19元230G&#xff0c;那么&#xff0c;这些卡有没有套路呢&#xff0c;怎么辨别抖音手机卡真假&#xff1f;接下来&a…

[Vue] 组件卡槽的使用

SLOT 例子 参考代码&#xff1a;code实现功能&#xff1a; 两种方法实现父组件往子组件中传入DOM节点 1. 属性传值&#xff08;不推荐&#xff09; 2. Slot插槽使用 &#xff08;推荐&#xff09;属性传值&#xff08;不推荐&#xff09; 思路&#xff08;注意&#xff1a;…

Redis的介绍和安装教程(配置文件)

1.Redis简单的介绍 redis是一种键值对的NoSql数据库&#xff0c;这里有两个关键字&#xff1a; 键值对 Nosql 其中键值型&#xff0c;是指Redis中存储的数据都是以key.value对的形式多种多样&#xff0c;可以实字符串、数值、甚至json&#xff0c;可以参考HashMap 然后NoSq…

美女小姐姐是你得菜吗~PYTHON采集西瓜小姐姐

目录标题 前言第三方模块&#xff1a;环境介绍:基本流程:代码展示尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 第三方模块&#xff1a; requests >>> pip install requests 第三方模块安装: win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉…

(笔记)Mac下耳机左右声道不平衡(左边小右边大或者右边大左边小)的解决方法

1.打开System Preferences 2.点击Soud&#xff08;声音&#xff09; 3.把Balance的进度条拉到中间位置就OK啦&#xff01;&#xff08;Output volume是你当前耳机音量的大小&#xff09;

小米air2se耳机只有一边有声音怎么办_双十一高性价蓝牙耳机排名,500元内真无线蓝牙耳机推荐...

这几年随着蓝牙技术及TWS技术的不断发展和普及&#xff0c;让真无线蓝牙耳机的门槛越来越低&#xff0c;现在蓝牙耳机市场上真无线蓝牙耳机的品牌产品是越来越多&#xff0c;让我们想选择一款心仪、价格又合适的真无线耳机困难重重&#xff0c;所以就在这里整理出了一些市场反响…

dl----pytorch基础知识

1.torch的基础单位tensor torch.function torch.save/torch.sum(a,b) tensor.function tensor.view/a.sum(b) a.add(b) # 加法的结果返回新的tensor a.add_(b) # 加法的结果存在a中 2.创建tensor的操作 import torch a torch.tensor(2) # 创建维度为2乘3的张量 a.tolist() …

golang 结构体struct转map实践

1、反射 type sign struct { Name string json:"name,omitempty" Age int json:"age,omitempty" } var s sign s.Name "csdn" s.Age 18 //方式1 反射 var data make(map[string]interface{}) t : reflect.TypeOf(s) v : …