• Vue插槽


    插槽内容:

    <template>
      <div>
        <p>-----------------组件基础之通过插槽分发内容(默认插槽)---------------------</p>
        <alert-box>Something bad happended</alert-box>
      </div>
    </template>
    <script>
    import AlertBox from "@/components/AlertBox";
    export default {
      components: { "alert-box": AlertBox }
    };
    </script>
    
    <style>
    </style>
    <template>
      <div class="demo-alert-box">
        <strong>Error!</strong>
        <slot></slot>
      </div>
    </template>
    
    <script>
    export default {};
    </script>
    <style>
    .demo-alert-box {
      margin: 0 auto;
      background-color: #f3beb8;
       550px;
    }
    </style>
    具名插槽
    <template>
      <section>
        <div id="demo33-1">
          <p>-----------组件基础之通过插槽分发内容(具名插槽)slot已被废弃---------------</p>我是父组件。
          下面是子组件:
          <son>
            <!-- <p slot="header">头部</p> -->
            <template slot="header">
              <p>头部</p>
            </template>
            <p>我是卖报的行家</p>
            <p slot="footer">尾部</p>
          </son>
        </div>
        <div id="demo33-2">
          <p>-----------组件基础之通过插槽分发内容(具名插槽)新的写法一---------------</p>我是父组件。
          下面是子组件:
          <son>     
            <template #header>
              <p>头部</p>
            </template>
            <template #default>我是卖报的行家</template>
            <template #footer><p>尾部</p></template>
          </son>
        </div>
        <div id="demo33-3">
          <p>-----------组件基础之通过插槽分发内容(具名插槽)新的写法二---------------</p>我是父组件。
          下面是子组件:
          <son>
            <!-- <p slot="header">头部</p> -->
            <template v-slot:header>
              <p>头部</p>
            </template>        
              <!-- v-slot 和 v-shot:default 是一样的效果 -->
             <template v-slot:default>我是卖报的行家</template>
            <template v-slot:footer><p>尾部</p></template>
          </son>
        </div>
      </section>
    </template>
    
    <script>
    import son from "@/components/Son";
    export default {
      components: { son }
    };
    </script>
    
    <style>
    </style>
     
    <template>
        <div>
            <slot name="header"></slot>
            <slot name="footer"></slot>
            我是子组件。
        </div>
    </template>
    
     
    作用域插槽
    <template>
      <section>
        <div id="demo34-1">
          <p>--------组件基础之通过插槽分发内容(slot-scope作用域插槽已被废弃)----------</p>
          <child :lists="nameList">
            <template slot-scope="a">{{a}}</template>
          </child>
    
          <child :lists="nameList">
            <template slot-scope="a">
              <div v-if="a.bbb.id===1">
                你好:
                <span>{{a.bbb.name}}</span>
              </div>
              <div v-else>{{a.bbb.name}}</div>
            </template>
          </child>
        </div>
        <div id="demo34-2">
          <p>--------组件基础之通过插槽分发内容(新写法v-slot)----------</p>
          <!-- v-slot 和 v-shot:default 是一样的效果 -->
          <child :lists="nameList">
            <!-- <template v-slot="a">{{a}}</template> -->
            <template v-slot>{{a}}</template>
          </child>
    
          <child :lists="nameList">
            <template v-slot="a">
              <div v-if="a.bbb.id===1">
                你好:
                <span>{{a.bbb.name}}</span>
              </div>
              <div v-else>{{a.bbb.name}}</div>
            </template>
          </child>
        </div>
      </section>
    </template>
    
    <script>
    import child from "@/components/Child";
    export default {
      components: { child },
      data() {
        return {
          nameList: [
            { id: 1, name: "孙悟空" },
            { id: 2, name: "猪八戒" },
            { id: 3, name: "沙和尚" },
            { id: 4, name: "唐僧" },
            { id: 5, name: "小白龙" }
          ]
        };
      }
    };
    </script>
    
    <style>
    </style>
    <template>
        <div>
            <ul>
                <li v-for="(list,index) in lists" :key=index>
                    <slot :bbbb="list"></slot>
                </li>
            </ul>
        </div>
    </template>
    <script>
    export default {
        props:['lists']
    }
    </script>

    https://www.cnblogs.com/chinabin1993/p/9115396.html   Vue 插槽详解

      vue中的插槽--slot和v-slot  https://blog.csdn.net/xiaolinlife/article/details/89517928

  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/11056398.html
Copyright © 2020-2023  润新知