vue插槽的简单使用

默认插槽

1.在Category中创建插槽

复制代码
<slot>默认值<slot/>

2.在App中使用

复制代码
       <Category tittle="美食"> 
         <ul >
         <li v-for="(l,index) in foods" :key="index">{{l}}</li>
        </ul>   
        </Category> 

3.运行后的效果

4.不在app中使用插槽的效果

具名插槽,具名之意,就是给插槽附名

1.定义

复制代码
          <slot name="games">游戏</slot>  
          <slot name="foods">食物</slot>  

2.使用

javascript 复制代码
  <div class="container">
    <Category tittle="美食">
      <ul slot="foods">
        <li v-for="(l, index) in games" :key="index">{{ l }}</li>
      </ul>
    </Category>
    <Category tittle="游戏">
      <template slot="games">
        <ul>
          <li v-for="(l, index) in games" :key="index">{{ l }}</li>
        </ul>
      </template>
    </Category>
  </div>

3.运行,因为我们写了两个插槽,另一个没有被使用就展示的默认值

作用域插槽(将数据放到子组件中)

1.子组件

javascript 复制代码
<template>
    <div class="category">
          <h2>{{tittle}}分类</h2>
          <slot name="game" :shiwu="games">游戏</slot>
          <slot name="food" :youxi="foods">食物</slot>  
     
    </div>
</template>

<script>
export default {
 name:"Category",
 props:['tittle'],
   data() {
    return {
      foods: ["香蕉", "苹果", "橙子", "梨", "火锅"],
      games: ["王者", "崩铁", "原神", "火影"],
    }
}
}
</script>

<style scoped>
.category{
    background-color: skyblue;
    width: 200px;
    height: 300px;
}
h2{
    text-align: center;
    background-color: orange;
}
ul li{
    display: flex;
   justify-content: start; 
}
</style>

2.App组件

javascript 复制代码
<template>
  <div class="container">
    <Category tittle="游戏">
      <template  slot="game" slot-scope="g"> 
        <ul >
          <li v-for="(l, index) in g.shiwu" :key="index">{{ l }}</li>
        </ul>
      </template>
    </Category>

        <Category tittle="食物">
      <template slot="food" slot-scope="f" > 
        <ul>
          <li v-for="(l, index) in f.youxi" :key="index">{{ l }}</li>
        </ul>
      </template>
    </Category>
  </div>
</template>

<script>
import Category from "./components/Category";
export default {
  name: "App",
  components: { Category },
}
</script>



<style scoped>
.container {
  display: flex;
  justify-content: space-around;
}
</style>

3.运行效果

相关推荐
一纸忘忧2 分钟前
成立一周年!开源的本土化中文文档知识库
前端·javascript·github
涵信31 分钟前
第九节:性能优化高频题-首屏加载优化策略
前端·vue.js·性能优化
前端小巷子43 分钟前
CSS单位完全指南
前端·css
SunTecTec1 小时前
Flink Docker Application Mode 命令解析 - 修改命令以启用 Web UI
大数据·前端·docker·flink
涵信2 小时前
第十一节:性能优化高频题-响应式数据深度监听问题
javascript·vue.js·性能优化
拉不动的猪2 小时前
前端常见数组分析
前端·javascript·面试
小吕学编程3 小时前
ES练习册
java·前端·elasticsearch
Asthenia04123 小时前
Netty编解码器详解与实战
前端
袁煦丞3 小时前
每天省2小时!这个网盘神器让我告别云存储混乱(附内网穿透神操作)
前端·程序员·远程工作
Mr.app3 小时前
vue mixin混入与hook
vue.js