详解vue使用插槽分发内容slot的用法


Posted in Javascript onMarch 28, 2019

将父组件的内容放到子组件指定的位置叫做内容分发

//在父组件里使用子组件
<son-tmp>
	<div>我是文字,我需要放到son-tmp组件里面制定的位置</div>
</son-tmp>

单个插槽

父组件app.vue

<template>
 <div id="app">
  <test-slot>
   <span>我是父组件里的文字,但是我要被放到子组件里</span>
  </test-slot>
 </div> 
</template> 
 
<script>
import testSlot from './components/testSlot'
export default {
 data(){
  return {
   
  }
 },
 components:{
  testSlot
 }
}
</script>

<style>

</style>

子组件testSlot.vue

<template>
 <div>
  <h3>test-slot</h3>
  //父组件里的span会替换掉slot所以这里的123是看不见的
  //如果父组件在使用子组件testSlot的时候不在里面加内容则这里的slot会显示出来
  <slot>123</slot> 
 </div> 
</template> 
 
<script>
export default { 
 data(){
  return {
   
  }
 }
}
</script>

<style>

</style>

效果图:

详解vue使用插槽分发内容slot的用法

多个插槽也叫具名插槽

具名插槽就是将某个名字的内容插到子组件对应名字里面去

父组件app.vue

<template>
 <div id="app">
	//使用子组件testSlot
  <test-slot>
	 //slot=one这个div会替换掉子组件里name="one"的slot标签
   <div slot="one">
    <span>one</span>
    <span>第一个</span>
   </div> 
   //这个div没有用slot指定名字所以会替换掉子组件里没有name属性的slot标签
   <div>
    <span>此div没有slot</span>
   </div>
   //slot=two这个div会替换掉子组件里name="two"的slot标签
   <div slot="two">
    <span>two</span>
    <span>第二个</span>
   </div> 
  </test-slot>
 </div> 
</template> 
 
<script>
import testSlot from './components/testSlot'
export default {
 data(){
  return {
   
  }
 },
 components:{
  testSlot
 }
}
</script>

<style>

</style>

子组件testSlot.vue

<template>
 <div class="testSlot">
  <div class="noneSlot">
   <slot></slot> 
  </div>
  <div class="test-two">
   <slot name="two"></slot> 
  </div>
  <div class="test-one">
   <slot name="one"></slot> 
  </div>
 </div> 
</template> 
 
<script>
export default { 
 data(){
  return {
   
  }
 }
}
</script>

<style>

</style>

详解vue使用插槽分发内容slot的用法

作用域插槽(将子组件的值传到父组件供使用)

父组件app.vue

<template>
 <div id="app">
  <h2>app</h2>
   <test-slot :items="items">
    <template slot-scope="props">
     <span>{{ props.addr }}</span>
     <span>{{ props.cname }}</span>
     <span>{{ props.age }}</span>
    </template>
   </test-slot>
 </div>
</template>

<script>
import testSlot from './components/testSlot.vue'
export default {
 data (){
  return {
   items:[
    { text:'文字1' , cname:'tom' , addr:'usa' },
    { text:'文字2' , cname:'wangwu' , addr:'uk' },
    { text:'文字3' , cname:'zhangsan' , addr:'un' }
   ]
  }
 },
 methods:{
  
 },
 components:{
  testSlot
 }
}
</script>

<style>

</style>

子组件testSlot.vue

<template>
 <div class="hello">
  <slot :cname="items[2].cname"></slot> 
  <slot :addr="items[2].addr"></slot> 
  <slot age="18"></slot> 
 </div>
</template>

<script>
export default {

 data () {
  return {
   num:100
  } 
 },
 props:['items'],
 methods:{
  
 },
 created(){
  console.log('items',this.$props.items);
 }
}
</script>

<style scoped>

</style>

效果图:

详解vue使用插槽分发内容slot的用法

以上所述是小编给大家介绍的vue使用插槽分发内容slot的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery ajax 检测用户注册时用户名是否存在
Nov 03 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
Dec 28 Javascript
jQuery(非HTML5)可编辑表格实现代码
Dec 11 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
Aug 23 Javascript
jQuery中slideUp()方法用法分析
Dec 24 Javascript
深入理解JavaScript中的对象复制(Object Clone)
May 18 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
Jun 09 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
Aug 29 Javascript
a标签置灰不可点击的实现方法
Feb 06 Javascript
JavaScript 过滤关键字
Mar 20 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
Apr 10 Javascript
Vue中keep-alive的两种应用方式
Jul 15 Javascript
详解一个基于套接字实现长连接的express
Mar 28 #Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
Mar 28 #Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
Mar 28 #Javascript
深入理解es6块级作用域的使用
Mar 28 #Javascript
详解在网页上通过JS实现文本的语音朗读
Mar 28 #Javascript
详解React服务端渲染从入门到精通
Mar 28 #Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
Mar 28 #Javascript
You might like
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
js实现简单进度条效果
2020/03/25 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
Python操作Word批量生成文章的方法
2015/07/28 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
python+mysql实现教务管理系统
2019/02/20 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
python+opencv实现车道线检测
2021/02/19 Python
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
创业计划书六个要素
2013/12/26 职场文书
教职工代表大会主持词
2014/04/01 职场文书
房屋转让协议书
2014/04/11 职场文书
经济管理专业求职信
2014/06/09 职场文书
领导干部对照检查材料
2014/08/24 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python