Vue2基础知识(五)插槽

编程入门 行业动态 更新时间:2024-10-28 15:19:58

Vue2基础知识(五)<a href=https://www.elefans.com/category/jswz/34/1756281.html style=插槽"/>

Vue2基础知识(五)插槽

  • 💌 所属专栏:【Vue2】
  • 😀 作 者:长安不及十里
  • 💻工作:目前从事电力行业开发
  • 🌈目标:全栈开发
  • 🚀 个人简介:一个正在努力学技术的Java工程师,专注基础和实战分享 ,欢迎咨询!
  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘
  • 📌 格言:把戏把戏要过手

  • 📏 官网:
  • ⛳ 参考教程:
  • 🔧 Vue脚手架:
  • 🔧 VueRouter:
  • 🔧 VueX:

一 插槽

1.1 如何理解插槽

  • Slot 通俗的理解就是“占坑”,在组件模板中占好了位置,当使用该组件标签时候,组件标签里面的内容就会自动填坑(替换组件模板中slot位置)。
  • 并且可以作为承载分发内容的出口。
  • 简单来说就是占位符。

1.2 默认插槽

<template><div class="category"><h3>{{title}}分类</h3><!-- 定义一个插槽(挖个坑,等着组件的使用者进行填充) --><slot>我是一些默认值,当使用者没有传递具体结构时,我会出现</slot></div>
</template><script>export default {// 组件的名称name:'CustomSlots',// 组件的属性props:['title']}
</script><style scoped>.category{background-color: skyblue;width: 200px;height: 300px;}h3{text-align: center;background-color: orange;}video{width: 100%;}img{width: 100%;}
</style>
<template><div id="app"><CustomSlots title="美食"><ul><li v-for="(item,index) in foods" :key="index">{{item}}</li></ul></CustomSlots><CustomSlots title="游戏"><ul><li v-for="(item,index) in games" :key="index">{{item}}</li></ul></CustomSlots><CustomSlots title="电影"><ul><li v-for="(item,index) in films" :key="index">{{item}}</li></ul></CustomSlots></div>
</template><script>import CustomSlots from './components/CustomSlots.vue'export default {name: 'App',components: {CustomSlots},data() {return {foods:['火锅','烧烤','小龙虾','牛排'],games:['红色警戒','穿越火线','劲舞团','超级玛丽'],films:['《教父》','《拆弹专家》','《你好,李焕英》','《小鞋子》']}},
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>


1.3 具名插槽

元素有一个特殊的 attribute:name。通过该属性可以将内容放在指定的插槽里。

<template><div class="category"><h3>{{title}}分类</h3><!-- 定义一个插槽(挖个坑,等着组件的使用者进行填充) --><slot name="center">我是一些默认值,当使用者没有传递具体结构时,我会出现1</slot><slot name="footer">我是一些默认值,当使用者没有传递具体结构时,我会出现2</slot></div>
</template><script>export default {name:'NameSlots',props:['title']}
</script><style scoped>.category{background-color: skyblue;width: 200px;height: 300px;}h3{text-align: center;background-color: orange;}video{width: 100%;}img{width: 100%;}
</style>
 <NameSlots title="美食"><template v-slot:footer><ul><li v-for="(item,index) in foods" :key="index">{{item}}</li></ul></template><template v-slot:center><ul><li v-for="(item,index) in foods" :key="index">{{item}}</li></ul></template></NameSlots>
  • 如果一个不带name属性的话,那么它的name默认为default
    在向具名插槽提供内容的时候,我们可以在元素上使用v-slot指令,并以参数的形式提供其名称
  • 简化写法:
 <NameSlots title="美食"><template #footer><ul><li v-for="(item,index) in foods" :key="index">{{item}}</li></ul></template><template #center><ul><li v-for="(item,index) in foods" :key="index">{{item}}</li></ul></template></NameSlots>

1.4 数据作用域

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

<template><div class="category"><h3>{{title}}分类</h3><slot :games="games" msg="hello">我是默认的一些内容</slot></div>
</template><script>export default {name:'ScopeSlots',props:['title'],data() {return {games:['红色警戒','穿越火线','劲舞团','超级玛丽'],}},}
</script><style scoped>.category{background-color: skyblue;width: 200px;height: 300px;}h3{text-align: center;background-color: orange;}video{width: 100%;}img{width: 100%;}
</style>
 <ScopeSlots title="美食"><template scope="joney"><ul><li v-for="(g,index) in joney.games" :key="index">{{g}}</li></ul></template></ScopeSlots><ScopeSlots title="游戏"><template scope="{games}"><ol><li style="color:red" v-for="(g,index) in games" :key="index">{{g}}</li></ol></template></ScopeSlots><ScopeSlots title="游戏"><template slot-scope="{games}"><h4 v-for="(g,index) in games" :key="index">{{g}}</h4></template></ScopeSlots><ScopeSlots title="电影"><template v-slot="joney"><h4 v-for="(f,index) in joney.films" :key="index">{{f}}</h4></template></ScopeSlots>

更多推荐

Vue2基础知识(五)插槽

本文发布于:2023-12-04 19:17:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1661962.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:插槽   基础知识

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!