Vue.js(八) api

一:插槽slot

Vue 实现了一套内容分发的 API, 将 元素作为承载分发内容的出口。
简单的说就是将一段html元素作为参数传递到自定义组件中。

使用元素来预定义插槽的位置,后面可以将内容直接插在插槽位置上即可。
中也可以有默认值,当使用组件没有提供插槽内容时就会使用默认值。
Vue.js(八) api_第1张图片

官方文档:https://cn.vuejs.org/v2/api/#slot

1.1 默认插槽

默认插槽没有名字的插槽,一般默认插槽只有一个,自定义一个组件(导航链接组件NavLink.vue),组件的内容比较简单只有一个a标签,在a标签中使用了元素。

<template>
  <a v-bind:href="'#' + url">
    <slot>插槽默认值:当没有提供插槽内容时使用这里的值slot>
  a>
template>

<script>
export default {
  name: 'NavLink',
  props: {
    url: String
  }
}
script>
<template>
  <div>
    <nav-link url="/foo">
      <span>Navigation Link To Foo Componentspan>
      <br>
      <span> 插槽的作用就是将一段html元素(也可以是其它自定义的组件)传参到自定义的组件中, 然后将slot部分替换掉 span>
    nav-link>

    <br><br>

    <nav-link url="/foo">nav-link>
  div>
template>
<script>
import NavLink from './NavLink'

export default {
  name: 'HelloWorld',
  components: {NavLink}
}
script>

查看源码可以看到标签内的内容传递到NavLink组件,并将元素给替换掉了。简单来说slot就是组件的一种传参方式,只不过传的是html元素。
Vue.js(八) api_第2张图片

1.2 具名插槽

当组件中有多个插槽位置时,可以给每个插槽命一个名字,在使用时指定插槽名称即可。
使用组件时在传递插槽内容时可以将slot属性作用在