Vue 插槽允许将父组件中的内容注入到子组件中。
这是最基本的示例,如果我们不提供父级的任何slot 内容,则我们将放在其中的任何内容都会作为后备内容。
- // ChildComponent.vue
-
-
-
后备内容 -
-
你组件代码:
- // ParentComponent.vue
-
-
- 替换 slot 的默认内容
-
-
编译后,我们的 DOM 将如下所示
- 替换 slot 的默认内容
我们还可以将父组作用域内的任何数据写在 slot 区域中。例如,父组件有一个名为title的数据字段,我们可以使用以下代码将其注入到子组件中:
- // ParentComponent.vue
-
-
-
- {{ title }}
-
-
-
-
为什么我们需要命名插槽
在Vue中使用命名插槽有两个步骤:
- 使用name属性从子组件中命名 slot
- 使用v-slot指令从父组件向这些命名插槽提供内容
默认情况下,不给插槽显式的name属性时,它有默认名字是default。
为了给我们的 slot 起个名字,元素具有一个特殊的name属性,可以让我们在多个插槽之间进行区分。
在下面的Article.vue 中,我们命名三个 slot
- // Article.vue - Child Component
-
-
-
name ="title"> 默认 title -
name ="content"> 默认 content -
name ="comments"> 默认 comments -
-
然后,在父组件中,我们可以在元素上使用v-slot指令指定我们想要注入内容的slot。
- // ParentComponent.vue
-
-
-
- 我的 Title
- 我的 Content
- 我的 Comments
-
-
-
因为这是没有指定 slot 的名称,所以显示的是 slot 默认的内容。
要解决这个问题,可以使用v-slot,指定的名称要确保名称与我们在子组件中声明的名称完全匹配。
-
-
-
- 我的 title
- 我的 content
- 我的 comments
-
-
-
再次运行:
使用 Vue 命名插槽有什么意义
命名槽让我们可以使用多个槽,但是为什么这对我们Vue开发人员有用呢。
简而言之,它使我们可以更好地组织开发代码,还可以编写更具扩展性的代码。
就个人而言,我认为最重要的是,它允许我们在代码上使用插槽,从而使样式设计变得更加容易。在我们的示例中,Article.vue子组件只有三个插槽,但是在实际应用中,这些插槽看起来更像这样,以便我们的组件可以向每个部分添加CSS样式。
-
-
- "title">
-
-
- "content">
-
-
name ="content"> 默认 Content -
-
- "comments">
-
name ="comments"> 默认 Comments -
-
-
在此示例中,更容易理解为什么我们需要多个 slot。由于我们注入的内容是通过不同的 和DOM元素彼此分隔的。无法在一个slot中传递所有这些信息。 如果检查DOM,可以看到使用v-slot的模板将内容正确地插入到正确的位置。 ~完,我是刷碗智,去刷碗了,下期见! 作者:Matt Maribojoc 译者:前端小智 来源:stackabuse 原文:https://learn.co/2021/04/using-vue-named-slots-to-create-multile-template-slots/ 本文转载自微信公众号「大迁世界」,可以通过以下二维码关注。转载本文请联系大迁世界公众号。 免责声明: ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。 ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341 193.9 KB下载数265 191.63 KB下载数245 143.91 KB下载数1148 183.71 KB下载数642 644.84 KB下载数2756软考中级精品资料免费领
相关文章
发现更多好内容猜你喜欢
AI推送时光机怎么用Vue命名插槽创建多个模板插槽
Vue如何创建多个模板插槽
如何在vue中使用具名插槽