详解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文件中引用依赖的js文件的方法
Mar 17 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
May 10 Javascript
基于JavaScript实现跳转提示页面
Sep 24 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
Oct 13 Javascript
百度多文件异步上传控件webuploader基本用法解析
Nov 07 Javascript
BootStrap3使用错误记录及解决办法
Dec 22 Javascript
js数组与字符串常用方法总结
Jan 13 Javascript
各种选择框jQuery的选中方法(实例讲解)
Jun 27 jQuery
在一般处理程序(ashx)中弹出js提示语
Aug 16 Javascript
vue生成随机验证码的示例代码
Sep 29 Javascript
Koa日志中间件封装开发详解
Mar 09 Javascript
js实现百度登录窗口拖拽效果
Mar 19 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
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
详解原生js实现offset方法
2017/06/15 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
Python中import机制详解
2017/11/14 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
python实现快递价格查询系统
2020/03/03 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
幼儿教师个人求职信范文
2013/09/21 职场文书
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
公司募捐倡议书
2014/05/14 职场文书
化工实习心得体会
2014/09/09 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
自主招生专家推荐信
2015/03/26 职场文书
队名及霸气口号大全
2015/12/25 职场文书
Python图像处理库PIL详细使用说明
2022/04/06 Python