详解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 相关文章推荐
function foo的原型与prototype属性解惑
Nov 19 Javascript
js 创建书签小工具之理论
Feb 25 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
Aug 27 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
Jquery on方法绑定事件后执行多次的解决方法
Jun 02 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
Apr 25 Javascript
微信小程序实现流程进度的图样式功能
Jan 16 Javascript
Vue使用虚拟dom进行渲染view的方法
Dec 26 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
vue如何搭建多页面多系统应用
Jun 17 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
Nov 05 Javascript
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
详解一个基于套接字实现长连接的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 程序员的调试技术小结
2009/11/15 PHP
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
php缓存技术详细总结
2013/08/07 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
python正则实现计算器功能
2017/12/14 Python
Django自定义manage命令实例代码
2018/02/11 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
单位租房协议范本
2014/12/03 职场文书
法院个人总结
2015/03/03 职场文书
结婚十年感言
2015/07/31 职场文书
学习经验交流会策划书
2015/11/02 职场文书
初一英语教学反思
2016/02/15 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python