solt的使用
直接看代码把
<template id=‘test‘>
  <div class="test">
      <!-- 获取 props中 msg的值-->
    <header v-for="info in msg" :key="info.firstName">
      <slot name="header" :data="info"></slot>
    </header>
    <div>
        <!-- 父组件内调用子组件内 me的值,通过props传递-->
      <h2>{{hi}}</h2>
      <input type="text" v-model="hi.name" />
    </div>
    <footer>
      <slot name="footer" :data="bean"></slot>
    </footer>
    <main>
      <slot :data="dog"></slot>
    </main>
  </div>
</template>
<script>
export default {
  name: "test",
  data() {
    return {
      hi: this.bean,
      dog: {
        id: 1,
        name: "hashq",
        color: "strike",
      },
    };
  },
  props: {
    msg: [Object, Array],
    bean: [Object, Array],
  },
};
</script>
<template>
  <div class="about">
    <!-- test 就是父组件 父组件绑定的数据在夫组件内可以直接使用 -->
    <!-- 相当于 父组件内已经声明定义了 persons 和 me 可以直接使用-->
    <test :msg="persons" :bean="me">
      <!-- 子组件使用父组件的具名插槽 -->
      <template v-slot:header="scope">
        <p> ------------header------------------------------------</p>
        <!-- scope可以获取到每一行的数据 -->
        {{scope}}
        <el-button>{{scope.data.firstName}}</el-button>
      </template>
      <template #footer="scope">
        <p> ------------footer------------------------------------</p>
        {{scope}}
        <el-button>{{scope.data.name}}</el-button>
      </template>
      
      <!-- 具名插槽也可以通过#name的方式  -->
      <template #default="scope">
        <p> ------------default------------------------------------</p>
        <!-- 通过scope可以获取到父组件slot 绑定的数据 -->
        <h2>{{scope.data.color}}</h2>
        <h2>{{scope}}</h2>
      </template>
    </test>
  </div>
</template>
<script>
// 子组件引用父组件的template
import test from "./slot.vue";
export default {
  name: "about",
  data() {
    return {
      me: {
        name: "yxs",
        sex: "male",
        age: 22,
      },
      persons: [
        {
          firstName: "1xs",
          lastName: "y",
        },
        {
          firstName: "2xs",
          lastName: "y",
        },
        {
          firstName: "3xs",
          lastName: "y",
        },
      ],
    };
  },
  components: {
    test,
  },
};
</script>
原文:https://www.cnblogs.com/loveliang/p/13607669.html