Vue slot插槽通俗解释
slot内容分发是Vue的Api来源
<div id="app">
<my-list> {{msg}} </my-list>
</div>
<script>
Vue.component("my-list", {
template: `<div><slot></slot></div>`,
});
var app = new Vue({
el: "#app",
data: {
msg: "父组件传参",
},
});
</script>
父组件里面:把<my-list> {{msg}} </my-list>中的 <my-list> </my-list>当作一个函数占位符,这里具体函数是my-list
{{msg}}当作父组件传给这个函数的参数
<slot></slot>
子组件里面:对应的函数是抽象的,它的效果就是将参数渲染到页面中
现在做几组对照试验:
- 子组件中的template中只有
<slot></slot>能接收传参,现将<slot></slot>去掉
<script>
Vue.component("my-list", {
template: `<div></div>`,
});
var app = new Vue({
el: "#app",
data: {
msg: "父组件传参",
},
});
</script>
没有任何值,父组件虽然传参过去了,但是子组件没接收到,所以子组件不显示
那为什么父组件自己不显示呢?
父组件与子组件是分开编译的,所以我认为是子组件产生的html覆盖了父组件的html

- 将slot加回到子组件,但是不给子组件这个插槽函数默认参数
<script>
Vue.component("my-list", {
template: `<div><p>位置1<slot></slot></p> 位置2<slot></slot><ul><li>位置3<slot></slot></li></ul></div>`,
});
var app = new Vue({
el: "#app",
data: {
msg: "父组件传参",
},
});
</script>
子组件只有通过才能接收父组件传递的值

- 父组件传参与子组件默认参数的PK,我们知道在函数中传递的实参会覆盖掉函数中的默认参数的
<div id="app">
<my-list> {{msg}} </my-list>
</div>
<script>
Vue.component("my-list", {
template: `<div><slot>子组件默认参数</slot></div>`,
});
var app = new Vue({
el: "#app",
data: {
msg: "父组件传参",
},
});
</script>
结果显示与函数效果一样:传递的实参会击败默认参数,slot也符合API的特性

具名插槽就是带名字的'函数',用slot接收参数时也要加上对应的name
具名插槽不会使用子组件的值
原始只用slot写法:
<div id="app">
<base-layout>
<div slot = 'header'>
我是父组件提供的头部
</div>
<div>
我是父组件提供的main部分
</div>
<div slot ="footer"></div>
</base-layout>
</div>
<script>
Vue.component('baseLayout',{
template:`
<div class="container">
<header>
<slot name="header">我是子组件提供的头部</slot>
</header>
<main>
<slot>我是子组件提供的main</slot>
</main>
<footer>
<slot name="footer">我是子组件提供的尾部</slot>
</footer>
</div>
`
})
var vm = new Vue({
el:"#app",
data:{
}
})
</script>
新写法:v-slot
注意 v-slot 只能添加在 上
现在 元素中的所有内容都将会被传入相应的插槽。任何没有被包裹在带有 v-slot 的 中的内容都会被视为默认插槽的内容
<div id="app">
<base-layout>
<template v-slot:header>
<div>
我是父组件提供的头部
</div>
</template>
<div>
我是父组件提供的main部分
</div>
<template v-slot:footer>
<div></div>
</template>
</base-layout>
</div>
<script>
Vue.component('baseLayout',{
template:`
<div class="container">
<header>
<slot name="header">我是子组件提供的头部</slot>
</header>
<main>
<slot>我是子组件提供的main</slot>
</main>
<footer>
<slot name="footer">我是子组件提供的尾部</slot>
</footer>
</div>
`
})
var vm = new Vue({
el:"#app",
data:{
}
})
</script>
作用域插槽,父组件访问到子组件中的数据
Vue slot插槽通俗解释的更多相关文章
- Vue slot插槽内容分发
slot插槽使用 使用场景,一般父组件中又一大段模板内容需要运用到子组件上.或者更加复杂的,子组件需要运用到父组件大段模板内容,而子组件却不知道挂载的内容是什么.挂载点的内容是由父组件来决定的. Sl ...
- Vue slot插槽
插槽用于内容分发,存在于子组件之中. 插槽作用域 父级组件作用域为父级,子级组件作用域为子级,在哪定义的作用域就在哪. 子组件之间的内容是在父级作用域的,无法直接访问子组件里面的数据. 插槽元素 &l ...
- Vue slot 插槽用法:自定义列表组件
Vue 框架的插槽(slot)功能相对于常用的 v-for, v-if 等指令使用频率少得多,但在实现可复用的自定义组件时十分有用.例如,如果经常使用前端组件库的话,就会经常看到类似的用法: < ...
- vue slot插槽的使用
slot插槽的使用场景 父组件向子组件传递dom时会用到插槽 作用域插槽:当同一个子组件想要在不同的父组件里展示不同的状态,可以使用作用域插槽.展示的状态由父组件来决定 注:想要修改父组件向子 ...
- vue slot插槽的使用方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue slot 插槽详解
插槽含义:就是引入子组件后,在插入子组件元素中添加信息或者标签,使得子组件的指定位置插入信息或者标签 插槽有三种:默认插槽.具名插槽.作用域插槽,由于vue2.6.0后对插槽进行修改,但是兼容2.6. ...
- vue slot 插槽备忘
老是记不住插槽咋回事 记录下来备忘 父组件 <tab><template slot="boy" slot-scope="test">{{ ...
- vue slot插槽v-show不控制显示隐藏
vue中想控制插槽的显示隐藏,用v-show是不起任何作用的,改用v-if 可以生效.
- Vue结合slot插槽分发父组件内容实现高度复用、更加灵活的dialog组件
之前写过一篇关于vue实现dialog会话框组件的文章(http://www.cnblogs.com/fozero/p/8546883.html)[http://www.cnblogs.com/foz ...
随机推荐
- turtle角度坐标体系
seth()改变海龟的行进角度 例如 让海龟的方向朝着45°方向行进 turtle.seth(45) 让海龟的方向朝着-135°反方向行进 turtle.seth(-135) turtle.left( ...
- 基于MAXIMO的发电行业EAM解决方案
1. 行业背景 随着我国以“厂网分开,竞价上网”为特点的电力市场的起步和发展,发电厂.发电集团成为独立企业参与市场竞争,原有的“生产型”管理模式已经不再适应市场的需求.发电企业在重视安全质量.保证电力 ...
- [go语言]-深入理解singleflight
目录 前言 singleflight使用场景 singleflight 简介 singleflight的使用 从singleflight的test最简单用法 验证并发重复请求 singleflight ...
- 在思科三层交换机上配置DHCP,不同网段/VLAN间互通
摘要: 描述:在三层交换机上配置DHCP,实现DHCP为PC1/PC3分配192.168.1.X网段:实现DHCP为PC2/PC4分配192.168.2.X网段:并且各个PC间要可以互相通信.(文末附 ...
- 基础篇:java基本数据类型
1:java几种基本数据类型大小 关键字 类型 位数 (8位一字节) 取值范围(表示范围) byte 整型 8 -2^7 ~ 2^7-1 short 整型 16 -2^15 ~ 2^15-1 int ...
- ApiView 的使用
1.APIview使用. https://www.cnblogs.com/xiaonq/p/10124104.html ModelVIewSet 是对 APIView 封装 ModelSerial ...
- 配置hive的元数据到Mysql中
在hive的安装目录下,进入conf目录,创建一个hive-site.xml文件 根据官方文档配置参数,拷贝数据到hive-site.xml文件中 https://cwiki.apache.org/c ...
- c语言的变量,常量及作用域等
1.const定义常量 在C语言中,const可以用来定义的一个常量,在变量名前加上const即可. int const a: 定义了一个a的整数常量,且a的值不能被修改.如果要修改a的值,有以下两种 ...
- 软件定义网络实验记录⑤--OpenFlow 协议分析和 OpenDaylight 安装
一.实验目的 回顾 JDK 安装配置,了解 OpenDaylight 控制的安装,以及 Mininet 如何连接: 通过抓包获取 OpenFlow 协议,验证 OpenFlow 协议和版本,了解协议内 ...
- Layman 解决MUI 软键盘弹起挤压页面问题
问题:在使用mui和H5+进行移动端开发的时候,经常会遇见需要用户输入的情况 当input获取焦点弹起软键盘的时候,经常会遇见软键盘挤压页面.软键盘遮挡输入框等一系列问题: 原因:造成这种现象的原因是 ...