作用域插槽丶具名插槽丶默认插槽

 子级代码:

<template>
  <div>
      <slot></slot> //默认
      <slot name='title1'></slot> //具名
      <slot :nme="num"></slot>//作用域
// 备注的是第二种写法 
// 一般情况下作用域插槽都是默认的.但是当你设定了默认插槽同时又使用作用域插槽.
// 这个时候我们才给作用域插槽添加一个名字.
      <!-- <slot :nme="num" name="hello"></slot> -->
  </div>
</template> 
<script>
export default {
   data(){
    return{
      num:[1,2,3,4,5,6,7,8,'作用域插槽']
    }
   }
}
</script>

<style>

</style>

父级代码:

<template>
  <div>
//默认插槽
        <use01>
          <p>默认插槽</p>
        </use01>
//具名插槽
        <use01>
        <template #title1>
            <p>具体名插槽</p>
        </template>
          </use01>
//作用域插槽
          <use01>
       <template v-slot='abc'>
         <div>{
   
   { abc.nme }}</div>
        </template>
        </use01>

// 备注的是第二种写法  作用域插槽下的具名插槽
         <!-- <use01>
      <template v-slot:hello="abc">
        <div>{
   
   { abc.nme }}</div>
      </template>
    </use01> -->
  </div>
</template>

<script>
import use01 from '../components/01.vue'
export default {
   components:{
       use01
   }
}
</script>

<style>

</style>

输出结果:

默认插槽

默认插槽

具体名插槽

[ 1, 2, 3, 4, 5, 6, 7, 8, "作用域插槽" ]

注意:

       作用域插槽在没用使用具名的时候和默认插槽一起使用,会先执行一次默认插槽,再执行作用域插槽. 

本质上作用域插槽也算是默认插槽.也可以当默认插槽使用.

代码如下:

子级:

<template>
  <div>
      <slot></slot>
      <slot name='title1'></slot>
      <!-- <slot :nme="num"></slot> --> //这里是隐去的部分
      <slot :nme="num" name="hello"></slot>
  </div>
</template> 
<script>
export default {
   data(){
    return{
      num:[1,2,3,4,5,6,7,8,'作用域插槽']
    }
   }
}
</script>

<style>

</style>

 父级:

<template>
  <div>
        <use01>
          <p>默认插槽</p>
        </use01>
        <use01>
        <template #title1>
            <p>具体名插槽</p>
        </template>
          </use01>

          <!-- <use01>
       <template v-slot='abc'>
         <div>{
   
   { abc.nme }}</div>
        </template>
        </use01> --> //这里是隐去的部分

         <use01>
      <template v-slot:hello="abc">
        <div>{
   
   { abc.nme }}</div>
      </template>
    </use01>
  </div>
</template>

<script>
import use01 from '../components/01.vue'
export default {
   components:{
       use01
   }
}
</script>

<style>

</style>

输出结果:

默认插槽

具体名插槽

[ 1, 2, 3, 4, 5, 6, 7, 8, "作用域插槽" ]

总结: 

  使用作用域插槽的时候不要使用默认插槽.如果一起使用,必须给作用域插槽具名. 

在引入别人的插槽内容的时候不知道具体使用了什么名字怎么办

 通过以下下面具体方法可以查找到.

子级代码: 或者他人的组件.或者其他

<template>
  <div>
         <use01>
      <template v-slot:hello="abc">
//这里不知道具名是什么.就直接使用自己定义的名字.然后打开终端执行
        <div>{
   
   { abc }}</div>
      </template>
    </use01>
  </div>
</template>

<script>
import use01 from '../components/01.vue'
export default {
   components:{
       use01
   }
}
</script>

<style>

</style>

得到结果如下:

{ "a": [ 1, 2, 3, 4, 5, 6, 7, 8, "作用域插槽" ] }

这个时候"a":就是对方提供的具体名字.然后将他添加到自己的代码中


<use01>
<template v-slot:hello="abc">
<div>{
   
   { abc.a }}</div>
</template>
</use01>

猜你喜欢

转载自blog.csdn.net/wangyangzxc123/article/details/121028976
今日推荐