vue slot

 

在实际项目开发当中,时常会把父组件的内容与子组件自己的模板混合起来使用。而这样的一个过程在Vue中被称为内容分发。也常常被称为slot(插槽)。

个人理解:插槽(也就是slot)其实就是一块html模板,这个模板是用来做什么的?其实就是用来占位置的。

slot在子组件中占位置,在父组件中向位置里填充内容。所以这个插槽在哪里显示由子组件自己决定,显示不显示以及怎么显示由父组件决定的。

插槽主要分为匿名插槽,具名插槽,和作用域插槽。

匿名插槽:没有通过name属性定义的<slot>元素。一个组件中只能有一个匿名插槽。

父组件

子组件

效果:

 

在父组件的子组件标签中只要是没有slot属性的元素,其中的内容都会在匿名插槽中展示。

默认内容:我们可以通过在<slot>元素内添加内容来给插槽设置默认值

父组件

子组件

效果

 

当父组件的子组件标签中没有填充的内容时,插槽中就会默认展示<slot>元素中定义的默认内容,而父元素的子组件标签中有填充的内容时,默认内容就会被覆盖

父组件

子组件

效果

 

具名插槽:通过<slot>元素的name属性来定义的额外的插槽。一个组件中可以设置多个具名插槽。

 父组件

子组件

效果

通过name属性定义的插槽只会填充父组件中slot属性值与name属性值相同的元素中的内容,而且该元素中的内容也只会在定义了相同name属性值的插槽中展示。

编译作用域:标签在哪个组件文件里,就可以取到该文件的数据

父组件

 

子组件

效果

 虽然子组件标签里的内容会通过slot插槽插入到子组件中,但是他们并不能取到子组件里的childUser的值。

作用域插槽:其实我们也可以把他理解成带数据的插槽

父组件

子组件

效果

 

posted @ 2019-03-04 18:19  哒哒呵~  阅读(248)  评论(0编辑  收藏  举报