Vue-组件-插槽v-slot

看Vue文档整理笔记,便于自己学习  


插槽 

插槽内容

Vue 实现了一套内容分发的 API,这套 API 的设计灵感源自 Web Components 规范草案,将  元素作为承载分发内容的出口。

它允许你像这样合成组件:


  Your Profile

然后你在  的模板中可能会写为:


  

当组件渲染的时候, 将会被替换为“Your Profile”。插槽内可以包含任何模板代码,包括 HTML:


  
  
  Your Profile

甚至其它的组件:


  
  
  Your Profile

如果  没有包含一个  元素,则该组件起始标签和结束标签之间的任何内容都会被抛弃。

编译作用域

 当你想在一个插槽中使用数据时,例如:


  Logged in as {{ user.name }}

该插槽跟模板的其它地方一样可以访问相同的实例属性 (也就是相同的“作用域”),而不能访问  的作用域。例如 url 是访问不到的:


  Clicking here will send you to: {{ url }}
  

作为一条规则,请记住:

父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的。

后备内容

为一个插槽设置具体的后备 (也就是默认的) 内容 ,可以将它放在  标签内

现在当我在一个父级组件中使用  并且不提供任何插槽内容时:

后备内容“Submit”将会被渲染:

但是如果我们提供内容:


  Save

则这个提供的内容将会被渲染从而取代后备内容:

具名插槽-----2.6.0 更新

自 2.6.0 起有所更新。已废弃的使用 slot 特性的语法在这里。

有时我们需要多个插槽。例如对于一个带有如下模板的  组件:

对于这样的情况, 元素有一个特殊的特性:name。这个特性可以用来定义额外的插槽:

一个不带 name 的  出口会带有隐含的名字“default”。

在向具名插槽提供内容的时候,我们可以在一个