Vue v-slot:markname

  slot

    1.作用:使父组件向子组件插入html结构,也是组件间通信的一种方式,父组件===>自组件;

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

    3.使用方式:

      1.默认插槽:        

父组件:
    <Category>
      <div>html结构</div>
    </Category>
子组件:
    <template>
        <div>
            <!-- 定义插槽 -->
            <slot>插入默认内容</slot>
        </div>
    </template>

      2.具名插槽:

父组件:
    <Category>
      <template slot="mark1">
        <div>html结构</div>
      </template>
      <template v-slot:mark2>
        <div>html结构2</div>
      </template>
    </Category>
子组件:
    <template>
      <div>
        <!-- 定义插槽 -->
        <slot name='mark1'>插入默认内容</slot>
        <slot name='mark2'>插入默认内容</slot>
      </div>
    </template>

      3.作用域插槽:

        1.数据在组件的自身,根据生成的结构需要组件的使用者来决定

        

        2.编码:

父组件:
    <Category>
      <template scope="scopeData">
        <!-- ul list  -->
        <ul>
          <li v-for="item in scopeData.listdatas" :key="item.id">
            {{ item.name }}
          </li>
        </ul>
      </template>

      <template slot-scope="scopeData">
        <!-- h4 title  -->
        <h4 v-for="item in scopeData.listdatas" :key="item.id">
          {{ item.name }}
        </h4>
      </template>
    </Category>

子组件:
    <template>
      <div>
        <!-- 定义插槽 -->
        <slot :listdatas="listdatabase">插入默认内容</slot>
      </div>
    </template>


<script>
export default {
  //数据在子组件自身
  data() {
    return {
      listdatabase: {id:["1", "2", "3"],name:{"a","b","c"}},
    };
  },
};
</script>

 

 

 

         

 

posted @ 2022-04-14 14:59  清水紅葉  阅读(30)  评论(0编辑  收藏  举报