前端面试之插槽slot

184 阅读1分钟

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

slot又分三类,默认插槽,具名插槽和作用域插槽。 ●默认插槽:又名匿名插槽,当slot没有指定name属性值的时候,会显示默认插槽,一个组件内只有一个匿名插槽。 ●具名插槽:带有具体名字的插槽,也就是带有name属性的slot,一个组件可以出现多个具名插槽。 ●作用域插槽:它是默认插槽、具名插槽的一个变体,它的特点是可以将子组件内部的数据传递给父组件,让父组件根据子组件的传递过来的数据,去决定如何渲染该插槽。

实现原理:当子组件vm实例化时,获取到父组件传入的slot标签的内容,存放在vm.$slot中,默认插槽为vm.$slot.default,具名插槽为vm.$slot.插槽名,当组件执行渲染函数时候,遇到slot标签,使用$slot中的内容进行替换,此时还可以为插槽传递数据,若存在数据,则可称该插槽为作用域插槽。