Vue 2.x 插槽

发布于 2024-11-24 13:48:31 字数 2415 浏览 0 评论 0

插槽后备内容

SubmitButton.vue

<button type="submit">
  <slot>Submit</slot>
</button>

使用时

<submit-button></submit-button> // Submit
<submit-button>Save</submit-button> // Save

具名插槽

Layout.vue

<div class="container">
  <header>
    <slot name="header"></slot>
  </header>
  <main>
    <slot></slot>
    <!--<slot name="default"></slot>-->
  </main>
  <footer>
    <slot name="footer"></slot>
  </footer>
</div>

使用

<layout>
  <template v-slot:header>
    <h1>Here might be a page title</h1>
  </template>

  <p>A paragraph for the main content.</p>
  <p>And another one.</p>
  <!--  <template v-slot:default>-->
  <!--    <p>A paragraph for the main content.</p>-->
  <!--    <p>And another one.</p>-->
  <!--  </template>-->
  <template v-slot:footer>
    <p>Here's some contact info</p>
  </template>
</layout>

向使用者传参

<footer>
  <slot name="footer" v-bind:user="userInData"></slot>
</footer>

// 使用者
<template v-slot:footer="aaa">
  <p>{{ aaa.user.firstName }}</p>
</template>
// 解构写法 const { user } = aaa
<template v-slot:footer="{ user }">
  <p>{{ user.firstName }}</p>
</template>
// 添加结构默认参数
<template v-slot:footer="{ user = { firstName: 'Guest' } }">
  <p>{{ user.firstName }}</p>
</template>

使用者不想使用 template 标签

条件: 只有一个默认插槽

<div v-slot:default="abcd">
  <p>A paragraph for the main content.</p>
  <p>And another one.</p>
</div>
// 或省略 default
<div v-slot="abcd">
  <p>A paragraph for the main content.</p>
  <p>And another one.</p>
</div>

使用者想简写, default 不能简写

<template #footer>
  <p>Here's some contact info</p>
</template>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

南笙

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

安静被遗忘

文章 0 评论 0

喔爱吃橙子

文章 0 评论 0

草莓味的萝莉

文章 0 评论 0

梦里兽

文章 0 评论 0

mb_83J3Cyxa

文章 0 评论 0

时间海

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文