,,vue中slot(插槽)的介绍与使用

,,vue中slot(插槽)的介绍与使用

本文主要介绍了关于vue中slot的相关信息,通过示例代码进行了非常详细的介绍,对大家学习或使用vue有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。

什么是插槽?

Slot是Vue提出的一个概念。就像它的名字一样,slot是用来决定将承载的内容插入到指定的位置,这样模板就可以分块,具有模块化的特点,可重用性更强。插槽是否显示由父组件控制,插槽显示在哪里由子组件控制。

Vue slot 原理

web-components中有槽的概念,https://developers . Google . com/web/foundations/we B- components/shadow DOM。

槽元件

Shadow DOM使用slot元素来组合不同的DOM树。Slot是组件内部的占位符,用户可以用自己的标记填充它。

通过定义一个或多个slot,您可以将外部标记引入到组件的阴影DOM中进行呈现。这相当于说“在这里渲染用户的标记”。

注:Slot是一种为网络组件创建“声明性API”的方法。它们被混合到用户的DOM中,以帮助呈现整个组件,从而组合不同的DOM树。

怎么用插槽?

默认插槽

父组件

模板

差异

是我的父组件。

插槽1

P=' color: red '我是父组件插槽内容/p

/slotOne1

/div

/模板

编写希望在父组件引用的子组件中显示的内容(可以使用标签,也可以不使用)。

子组件(插槽1)

模板

div class='slotOne1 '

我是slotOne1组件/div。

插槽/插槽

/div

/模板

在子组件中写槽,槽所在的位置就是父组件要显示的内容。

当然,父组件引用的子组件中也可以写入其他组件。

父组件

模板

差异

是我的父组件。

插槽1

P=' color: red '我是父组件插槽内容/p

插槽一2/插槽一2

/slotOne1

/div

/模板

子组件(插槽2)

模板

div class='slotOne2 '

我是slotOne2组件。

/div

/模板

具名插槽

组件

模板

div class='slottwo '

divslotwo/div

插槽名称='header'/slot

插槽/插槽

插槽名称='页脚'/插槽

/div

/模板

在子组件中定义了三个slot标记,其中两个分别添加了名称属性header和footer。

父组件

模板

差异

是我的父组件。

第二个

p啦啦啦啦啦,我是卖报的小能手/p

模板slot='header '

我是slot/p,名字是header。

/模板

我是一个名为footer/p的插槽。

/slot-2

/div

/模板

使用父组件中的模板并写入相应的slot值来指定内容在子组件中的实际位置(当然不一定要写入模板)。没有相应值的其他内容将被放入槽中,而不会在子组件中添加name属性。

插槽的默认内容

父组件

模板

差异

是我的父组件。

插槽二/插槽二

/div

/模板

组件

模板

div class='slottwo '

Slot我不是卖报纸的小能手/slot

/div

/模板

您可以在子组件的slot标签中写入内容。当父组件不写内容时,将显示子组件的默认内容,当父组件写内容时,将替换子组件的默认内容。

编译作用域

父组件

模板

差异

是我的父组件。

第二个

p{{name}}/p

/slot-2

/div

/模板

脚本

导出默认值{

data () {

返回{

姓名:“杰克”

}

}

}

/脚本

组件

模板

div class='slottwo '

插槽/插槽

/div

/模板

作用域插槽

组件

模板

差异

是我的作用域槽的子组件。

slot :data='user'/slot

/div

/模板

脚本

导出默认值{

名称:“三号槽”,

data () {

返回{

用户:[

{姓名:'杰克',性别:'男孩' },

{姓名:'琼斯',性别:'女孩' },

{姓名:'汤姆',性别:'男孩' }

]

}

}

}

/脚本

在子组件的插槽标签上绑定所需的值。

父组件

模板

差异

我是瞄准镜插槽。

三号位

模板插槽-作用域=“用户”

' div v-for=' item in user . data ':key=' item . id '

{{item}}

/div

/模板

/slot-三

/div

/模板

在父组件上使用slot-scope属性,user.data是子组件传递的值。

总结

这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: