简单来说插槽就是一个占位的标签,当父组件传递进来内容后就会把这个占位标签替换掉。插槽是由于有时组件的要求不一样,为了组件的更多扩展性而进行的一种功能。
插槽主要分为三种:普通插槽(匿名插槽)、具名插槽和作用域插槽。今天主要记录普通插槽和具名插槽;由于距离学习时间有一年多了,作用域插槽放到后面复习后多理解一下再进行记录。
vue的插槽是使用
标签来进行定义的。具体使用方法如下:(由于只是演示插槽的使用,为了在一个页面直观的显示,并没有用vue-cli)
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- head>
-
- <body>
- <div id="app">
-
- <cpn>cpn>
-
- <cpn><button>替换默认button>cpn>
-
- <cpn>
- <button>按钮button>
- <p>多元素替换p>
- <button>按钮button>
- cpn>
- div>
- <template id="cpn">
- <div>
- <h2>插槽使用h2>
- <p>插槽是由于有时组件的要求不一样,为了组件的更多扩展性p>
- <slot><h6>默认值h6>slot>
- div>
- template>
- <script src="../node_modules/vue/dist/vue.js">script>
- <script>
- const app = new Vue({
- el: "#app",
- data: {
-
- },
- components: {
- cpn: {
- template: "#cpn",
- }
- }
- });
- script>
- body>
-
- html>
结果:

由上述代码和结果可以看出:
1、如果组件中并无传递,插槽会使用默认值,此时也可以把插槽就当做一个div标签
2、插槽可以使用一个标签进行替换,也可以使用多个标签进行替换
具名插槽就是给插槽加上一个属性,可以确定你要替换的是哪一部分
例如我们一个项目可能多处需要用到nav组件,但是nav组件有些页面是在中间显示,有些页面是左中右布局,有些页面是左右或者中右布局,这里就可以使用具名插槽来解决。使用方法如下:
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- head>
-
- <body>
- <div id="app">
- <h1>默认h1>
- <cpn>cpn>
- <br>
- <br>
- <hr>
-
- <h1>替换h1>
- <cpn>
- <span slot="center">中间替换span>
- cpn>
- <cpn>
- <button slot="left">左边替换button>
- cpn>
- div>
- <template id="cpn">
- <div>
-
-
- <slot name="left">左边slot>
- <slot name="center">中间slot>
- <slot name="right">右边slot>
- div>
- template>
- <script src="../node_modules/vue/dist/vue.js">script>
- <script>
- const app = new Vue({
- el: "#app",
- data: {
-
- },
- components: {
- cpn: {
- template: "#cpn"
- }
- }
- });
- script>
- body>
-
- html>
结果:

由上可以看出,具名插槽可以使用更多的组合进行显示,可以有选择的进行替换。