vue插槽:

27 阅读1分钟

vue插槽:

   1. 作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于 父组件 ===> 子组件。

   2. 分类:默认插槽、具名插槽、作用域插槽。

   3. 使用方式:

  1)默认插槽:

    父组件中:      

        <Category>
            <div>html结构</div>
       </Category>

     子组件中:

 <template>
    <div>
       <!— 定义插槽 —>
       <solt> 插槽默认内容…</slot>
     </div>
</template>

   2. 具名插槽:   

<div slot=‘插槽名’></div>  或  <template v-slot:插槽名></template>

        父组件中:      

 <Category>
    <template slot=‘center’>
       <div> html结构1 </div>
    </template>

     <template v-slot:footer>
       <div>html结构2</div>
    </template>
</Category>

  子组件中:  

<template>
    <div>
        <!— 定义插槽 —>
        <slot name=‘center’>插槽默认内容… </slot>
        <slot name=‘footer’>插槽默认内容….. </slot>
    </div>
</template>

  3. 作用域插槽:

  1. 理解: 数据在组件的自身,但根据数据生成的结构需要组件的使用者来决定。(比如 数据list 在子组件中,但使用数据list 所遍历出来的结构由父组件决定。)

  1. 具体编码:

    父组件中:

   <Category>
          <template scope=‘scopeData’>
                <!— 生成的是ul列表 —>
                <ul>
                <li v-for=‘g in scopeData.games:key=‘g’> {{g}} </li>
                </ul>
        </template>
    </Category>

 
   <Category>
        <template  slot-scope=‘scopeData’>
            <!— 生成的是h4标题  —>
           <h4 v-for=‘g in scopeData.games:key=‘g’>{{g}} </h4>
        </template>
   </Category>

    子组件中:     

 <template>
    <div>
    <slot :games=‘games’></slot>
    </div>
</template>

<script>
export default {
    name:’Category’,
    props:[‘title’],
    //数据在子组件自身
    data(){
        return {
    games:[‘111’,’222’,’333’]
        }
    },
}

 </script>