详解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 相关文章推荐
一端时间轮换的广告
Jun 26 Javascript
破解Session cookie的方法
Jul 28 Javascript
鼠标滚轮改变图片大小的示例代码
Nov 20 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
Feb 13 Javascript
JavaScript学习笔记之数组去重
Mar 23 Javascript
javascript闭包概念简单解析(推荐)
Jun 03 Javascript
详谈javascript精度问题与调整
Jul 08 Javascript
微信小程序登录session的使用
Mar 17 Javascript
vue项目中监听手机物理返回键的实现
Jan 18 Javascript
vue-cli4项目开启eslint保存时自动格式问题
Jul 13 Javascript
Vue 禁用浏览器的前进后退操作
Sep 04 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
Sep 24 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
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
javascript数组快速打乱重排的方法
2014/01/02 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
angular json对象push到数组中的方法
2018/02/27 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
js实现随机点名功能
2020/12/23 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
年度考核自我鉴定
2013/11/09 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android