详解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 相关文章推荐
利用javascript移动div层-javascript 拖动层
Mar 22 Javascript
javascript new一个对象的实质
Jan 07 Javascript
用jquery和json从后台获得数据集的代码
Nov 07 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
jquery制作LED 时钟特效
Feb 01 Javascript
EasyUI中在表单提交之前进行验证
Jul 19 Javascript
JS正则表达式修饰符global(/g)用法分析
Dec 27 Javascript
vue-router 路由基础的详解
Oct 17 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
Nov 13 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 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
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
js确认删除对话框效果的示例代码
2014/02/20 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
jquery实现聚光灯效果的方法
2015/02/06 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
详解Python3中的Sequence type的使用
2015/08/01 Python
Python性能提升之延迟初始化
2016/12/04 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
python实现flappy bird游戏
2018/12/24 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
Python 3.8 新功能全解
2019/07/25 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
大一新生军训时的自我评价分享
2013/12/05 职场文书
拖鞋店创业计划书
2014/01/15 职场文书
大学生毕业求职信
2014/06/12 职场文书
庆元旦活动总结
2014/07/09 职场文书
建筑结构施工求职信
2014/07/11 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
2015年消防工作总结
2015/04/24 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python