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.运行效果

相关推荐
墨渊君16 分钟前
“蒙”出花样!用 CSS Mask 实现丝滑视觉魔法
前端·css
huabuyu1 小时前
基于 React + MarkdownIt 的 Markdown 渲染器实践:支持地图标签和长按复制
前端
芦苇Z1 小时前
HTML <a> 标签的 rel 属性全解析:安全、隐私与 SEO 最佳实践
前端·html
在这儿不行1 小时前
Android 15边到边模式
前端
源猿人1 小时前
企业级文件浏览系统的Vue实现:架构设计与最佳实践
前端·javascript·数据可视化
红红大虾1 小时前
Defold引擎中关于CollectionProxy的使用
前端·游戏开发
最后一个农民工1 小时前
vue3实现仿豆包模版式智能输入框
前端·vue.js
xw52 小时前
uni-app中v-if使用”异常”
前端·uni-app
!win !2 小时前
uni-app中v-if使用”异常”
前端·uni-app