0
点赞
收藏
分享

微信扫一扫

web漏洞-java安全(41)

weipeng2k 2023-07-29 阅读 74

插槽(Slots)是 Vue 组件中一种非常有用的功能,用于在父组件中向子组件传递内容。Vue 3 引入了 <script setup> 语法,使得组件的写法更加简洁和易读。在本篇博客中,我们将探讨在 Vue 3 中使用插槽的不同方式,包括默认插槽、具名插槽以及作用域插槽。

默认插槽

默认插槽是 Vue 组件中最简单的插槽用法。它允许我们在父组件中传递内容到子组件,并在子组件中使用 <slot> 标签来接收这些内容。

父组件模板:

<template>
<ChildComponent>
<p>这是通过默认插槽传递的内容</p>
</ChildComponent>
</template>

子组件模板:

<template>
<div>
<slot name="header"></slot>
<slot name="footer"></slot>
</div>
</template>

作用域插槽

作用域插槽允许父组件向子组件传递数据,并在子组件中使用 v-slot 指令来接收这些数据。

父组件模板:

<template>
  <ChildComponent>
    <template v-slot="{ message }">
      <p>{{ message }}</p>
    </template>
  </ChildComponent>
</template>

子组件模板:

<template>
<div>
<slot :message="data.message"></slot>
</div>
</template>

<script setup>
const data = {
message: "这是通过作用域插槽传递的数据",
};
</script>

在使用作用域插槽时,父组件可以向子组件传递数据,子组件使用 v-slot 指令来接收数据。我们可以在子组件中通过 slot 标签的属性来访问这些数据。

栗子:

父组件:

<template>
  <AboutView title="没事">
    <img src="" alt="">
//省略地址
  </AboutView>
  <AboutView title="还行" :listData="games">
    <ul v-for="(game,index) in games" :key="index">
      <li>{{ game }}</li>
    </ul>
  </AboutView>
  <AboutView title="优势" >
    <video src="" controls style="width: 200px;height: 200px;"></video>
  </AboutView>
</template>
<script setup>
import AboutView from './views/AboutView.vue';
const games=["英雄联盟","永劫无间","PUBG"]
</script>

子组件:

<script setup>
import { defineProps } from "vue";

const props = defineProps(['title']);
</script>
<template>    
    <div>
        <!-- 使用props.title来显示标题 -->
        <h2>{{ title }}</h2>
        <!-- 其他组件内容 -->
        <slot></slot>
  </div>
</template>

 

 

总结起来,在 Vue 3 中,插槽的使用方式与 Vue 2 中有一些不同。使用 <script setup> 语法可以简化组件的写法,但在定义插槽内容时,我们需要使用 v-slot# 来指定具名插槽或作用域插槽。而在子组件中,使用 slot 标签来接收插槽内容,并可以通过 slot 标签的属性向子组件传递数据。

举报

相关推荐

0 条评论