vue中插槽的使用(slot)以及具名插槽与匿名插槽的区别

slot又名插槽,是Vue的内容分发机制,组件内部的模板引擎使用slot元素作为承载分发内容的出口。插槽slot是子组件的一个模板标签元素,而这一个标签元素是否显示,以及怎么显示是由父组件决定的。

slot又分三类,默认插槽,具名插槽和作用域插槽。(这里说前两种)

插槽的实质是:插槽实质是对子组件的扩展,通过插槽-----向组件内部“指定位置”传递内容。

匿名插槽:又名默认插槽,当slot没有指定name属性值的时候一个默认显示的插槽,一个组件内只有有一个匿名插槽。

举个例子:

先创建一个vue实例,再创建一个局部组件,在组件中定义好插槽,插槽一定要放在子组件中。

//这是局部组件child

在vm实例中的子组件中心定义好局部组件,并在视图层渲染。

import HelloWorld from "./components/HelloWorld.vue";
export default {
  name: "app",
  components: {
    HelloWorld,
  },
};

没有内容传递过去的时候,会显示插槽的(默认)内容

我们在视图层里向插槽内传递内容:

效果图:vue中插槽的使用(slot)以及具名插槽与匿名插槽的区别_第1张图片

 

有内容传递过去的时候,不会显示插槽的(默认)内容。

注意:要在视图层向插槽内传递内容时,必须在子组件中有插槽,否则不会显示!

当你在子组件中有多个匿名插槽时,传递的内容会分别放入各个插槽中:

//child(子组件)组件的代码


//app(父组件)组件的代码

效果图:vue中插槽的使用(slot)以及具名插槽与匿名插槽的区别_第2张图片

 

具名插槽:在子组件中定义插槽时,给对应的插槽分别起个名字,方便后边插入父组件将内容根据name来填充对应的内容。

先在子组件中给插槽起好名字(匿名插槽其实也有个默认的名字,default,可以省略不写):

//child组件 (具名插槽)


//app组件 

效果图:

vue中插槽的使用(slot)以及具名插槽与匿名插槽的区别_第3张图片

 

你可能感兴趣的:(vue.js,javascript,前端)