vueslotslot
vueslotslot个人理解个人感受,在不同的情况下对同一个组件添加不同的内容,不需要专门修改组件,就像java的多态一样,提高复用性。例如:就像一块基础设施完备的土地,为你划分了区域。只要位置没有所有权(名字),房子就可以随便盖。我们可以理解slot就是占据当前位置,方便我们插入内容。Vue的槽分为匿名槽(单槽/默认槽)、命名槽和作用域槽(带数据的槽)。在Vue2.6.0中,引入了命名槽和作用域槽引入了新的统一语法(即v-slot指令)。它取代了slot和slot-scope,这两个目前已弃用但未删除但仍然有用的功能。但是这两个在vue3中会被弃用,不会被支持或者失效不会在vue3中出现。//Thisisthehomecomponenttemplate我是homecomponent
没有传递内容
//home组件的内部内容
这是home组件的内部内容componentslot注意vueslot编译作用域的规则:父模板中的所有内容都在父作用域中;子模板中的所有内容都在子范围内编译。(个人理解:各管各的,互不干扰,这也是使用props和$emit传递数据的原因之一)组件模板中没有slot,组件内部的内容不会渲染,直接放弃。
{{msg}}//错误,属性或方法“msg”未在实例上定义,但在渲染期间被引用//组件内部的数据不是组件,而是其父级element节点的属性或方法。如果未声明父元素节点,则必须报错。是否可以渲染
//home组件内部的所有内容都会被丢弃,只渲染home模板。相当于下面的
槽使用
标签来确定渲染位置,只能使用一个默认槽。组件内的所有HTML内容都将呈现到插槽中。除了模板标签绑定v-slot指令的内容。v-slot指令,它取代了slot和slot-scope。v-slot速记将参数v-slot:之前的所有内容替换为字符#。比如v-slot:header可以改写为#header//named//scope//named-scope这个v-slot属性只能在上使用。Fallbackcontentandanonymousslot(singleslot/defaultslot)fallbackcontent当组件内部没有内容时渲染组件模板中slot标签的内容。否则,将呈现组件内的内容。//home组件模板我是home组件
没有内容