Vue中插槽的使用详解
1.介绍
插槽就是子组件中的提供给父组件使用的一个占位符,用
表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的 标签。通俗的说是:slot 是在父组建控制了子组件显示或隐藏相关内容。
插槽又分为三种,1.普通插槽 2.具命插槽 3.作用域插槽
1.普通插槽
子组件
父组件
组件标签中的内容 {{msg}}
标题
注:如果
2.具名插槽
在一个组件中有多个插槽,调用的时候为了给不同的组件传递,
参数就需要为插槽进行命名。为不同需求的组件传递不同的参数。
子组件
父组件
This is header
This is header
This is header
3.作用域插槽
作用域插槽的样式由父组件决定,内容却由子组件控制。前两种插槽不能绑定数据,作用域插槽是一个带绑定数据的插槽。简单的来说就是子组件提供给父组件参数,该参数仅限于插槽中使用,父组件可以根据子组件传过来的插槽数据来进行不同的方式展现和填充插槽的内容。
有时让插槽内容能够访问子组件中才有的数据是很有用的。例如,设想一个带有如下模板的
子组件封装的内容
{{ user.lastName }}
而我们在父组件引用,想换掉现有子组件预留的显示内容
{{ user.firstName }}
然而上述代码不会正常工作,因为只有
解决方式:
为了让 user 在父级的插槽内容中可用,我们可以将 user 作为
子组件
{{ user.lastName }}
绑定在
父组件
{{ slotProps.user.firstName }}