Vue slot插槽

168 阅读2分钟

--- highlight: agate

  在vue中,插槽是我们在项目经常会使用的,比如说当成一个布局模板,封装成一个组件来进行复用,其他页面需要使用类似的布局只需要传对应的内容到对应名字的插槽,不需要将模板在每个组件重新写一遍,减少代码冗余,提高开发效率

什么叫是插槽?

  插槽就是子组件提供给父组件的一个占位符,叫做slot,父组件可以在这个占位符里中填充代码,包括HTML和组件,填充的内容会替换掉子组件的slot,可以把它想像为一个坑,父组件用来填坑

使用插槽

1.基本用法 定义一个父组件 image.png 2.写一个子组件
image.png 3.将子组件引入到父组件里 使用插槽 image.png 现在子组件中使用了插槽slot之后,相当于留下了一个坑,占了个地方 4验证是否成功 image.png image.png 这就是插槽最基本的使用

具名插槽

所谓具名插槽,就是指有名字的插槽 image.png

在向具名插槽提供内容的时候,我们可以在一个 <template> 元素上使用 slot 指令,并以 slot 的参数的形式提供其名称

image.png

<template> 元素中的所有内容都将会被传入相应的插槽。任何没有被包裹在带有slot 的 <template> 中的内容都会被视为默认插槽的内容 页面效果如下。

image.png

v-slot的写法

image.png

作用域插槽

为了让 obj在父级的插槽内容中可用,我们可以将 obj作为 slot 元素的一个 attribute 绑定上去 image.png 绑定在 <slot> 元素上的 attribute 被称为插槽 prop。现在在父级作用域中,我们可以使用带值的 slot-scope 来定义我们提供的插槽 prop 的名字 image.png 使用v-slot image.png