插槽就是子组件提供给父组件的占位符,用slot来表示,父组件可以在这个占位符中填充各种的模板代码。
为什么要使用插槽?
你可能不太明白为什么要给子组件传入HTML而不是直接写在子页面中内,如果出现这种情况,你有五个子页面这五个子页面只有一小部分内容不一样。你会怎么做呢?最笨的办法就是复制代码,但在Vue中更加简便的方法就是插槽。
插槽的分类:
普通插槽、具名插槽、作用域插槽
子组件son.vue:
父组件
我是父组件
验证插槽是否生效 //用son组件标签包裹内容,验证slot
具名插槽就是每个插槽带有自己的名字,在父组件中用到v-slot
,也可以直接缩写为#
子组件:
子组件
父组件
父组件
one插槽
two插槽
作用域插槽可以传递参数。
子组件
This is an Children page
父组件
This is an Parent page
{{slotProps.obj1.name}}
{{twoSlotProps.obj2.name}}
动态指令参数也可以用在 v-slot 上,来定义动态的插槽名.
子组件:
This is an Children page
父组件:
This is an Parent page
{{slotProps.obj.name}}
slot又名插槽,是Vue的内容分发机制,组件内部的模板弓|擎使用slot元素作为承载分发内容的出口。插槽slot是子组件的一个模板标签元素,而这一个标签元素是否显示,以及怎么显示是由父组件决定的。
slot又分三类,默认插槽,具名插槽和作用域插槽。
实现原理:当子组件vm实例化时,获取到父组件传入的slot标签的内容,存放在vm. $slot
中,默认插槽为vm. $slot .default
,具名插槽为vm. $slot.xxx
, xx为插槽名,当组件执行渲染函数时候,遇到slot标签,使用$slot
中的内容进行替换,此时可以为插槽传递数据,若存在数据,则可称该插槽为作用域插槽。
上一篇:Go语言必知必会100问题-02 减少代码的嵌套层数
下一篇:HJ31 单词倒排