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 分钟前
Android 17 新特性:MessageQueue 无锁实现
android·前端
Asize4 分钟前
数组数据结构底层:从灵活到陷阱
前端·javascript·算法
十九画生5 分钟前
Ajax 入门:用 XHR 理解前后端异步请求
前端·javascript·后端
yingyima6 分钟前
Python re 模块速查:从实战对比中掌握正则表达式
前端
放下华子我只抽RuiKe51 小时前
FastAPI 全栈后端(三):数据库与 ORM
前端·数据库·react.js·oracle·性能优化·前端框架·fastapi
梵得儿SHI1 小时前
Vue 项目实战与性能优化全攻略:从代码、渲染到首屏,一站式解决卡顿慢加载
前端·vue.js·性能优化·vite·前端面试·前端优化·首屏优化
ShyanZh2 小时前
【skill】HTML PPT Skill:用 Claude Code 一句话生成专业演示文稿
前端·ai·html·powerpoint·skill
AI视觉网奇2 小时前
three教学 3d资产拼接源代码
前端·css·css3
程序猿阿伟2 小时前
《Chrome标签组搭建多任务高效浏览指南》
前端·chrome
2601_958352903 小时前
双麦 DSP 音频模块实战:一文梳理 A-68 在全行业场景的声学解决方案与落地要点
前端·嵌入式硬件·音视频·语音识别·降噪消回音·音频处理模块