<template>标签的作用是什么?<slot>标签的作用是什么?

<template><slot> 都是 Vue.js 框架中用于模板编程的标签,但它们在功能和应用场景上有所不同。

1. <template> 标签的作用

<template> 标签在 Vue.js 中用作一种声明性的方式来定义模板的片段。但它本身不会被渲染到最终的 DOM 中。<template> 的主要用途有:

  1. 条件渲染 :使用 v-ifv-else-ifv-else 来控制模板片段的渲染。
javascript 复制代码
<template>  
  <div>  
    <p v-if="showMessage">Hello, Vue!</p>  
    <p v-else>Goodbye, Vue!</p>  
  </div>  
</template>
  1. 列表渲染 :使用 v-for 指令来渲染列表。
javascript 复制代码
<template>  
  <div>  
    <ul>  
      <li v-for="(item, index) in items" :key="index">{{ item }}</li>  
    </ul>  
  </div>  
</template>
  1. 包装多个元素 :在 Vue 的模板中,一个组件通常只能有一个根元素。但有时你可能需要包装多个元素。这时,你可以使用 <template> 作为包裹元素,但请注意,<template> 本身不会被渲染到最终的 DOM 中。
javascript 复制代码
<template>  
  <template v-if="showMultipleElements">  
    <p>First paragraph.</p>  
    <p>Second paragraph.</p>  
  </template>  
</template>

2. <slot> 标签的作用

<slot> 标签在 Vue.js 中用于内容分发。在子组件中,你可以使用 <slot> 标签作为内容的插槽,然后在父组件中使用该子组件时,向这个插槽插入内容。

  • 默认插槽 :当子组件中只有一个 <slot> 时,它就是默认插槽。

子组件:

javascript 复制代码
<template>  
  <div>  
    <h2>Welcome to My Component</h2>  
    <slot></slot>  
  </div>  
</template>

父组件:

javascript 复制代码
<template>  
  <my-component>  
    <p>This is some content inserted into the slot.</p>  
  </my-component>  
</template>
  • 具名插槽 :当子组件中有多个 <slot> 时,可以给它们命名以区分。

子组件:

javascript 复制代码
<template>  
  <div>  
    <header>  
      <slot name="header"></slot>  
    </header>  
    <main>  
      <slot></slot>  
    </main>  
    <footer>  
      <slot name="footer"></slot>  
    </footer>  
  </div>  
</template>

父组件:

javascript 复制代码
<template>  
  <my-component>  
    <template v-slot:header>  
      <h1>This is the header</h1>  
    </template>  
    <p>This is some default content.</p>  
    <template v-slot:footer>  
      <p>This is the footer</p>  
    </template>  
  </my-component>  
</template>

这样,你就可以在父组件中向子组件的不同插槽插入不同的内容了。

相关推荐
pixle014 分钟前
Vue3 Echarts 3D饼图(3D环形图)实现讲解附带源码
前端·3d·echarts
麻芝汤圆1 小时前
MapReduce 入门实战:WordCount 程序
大数据·前端·javascript·ajax·spark·mapreduce
juruiyuan1113 小时前
FFmpeg3.4 libavcodec协议框架增加新的decode协议
前端
Peter 谭3 小时前
React Hooks 实现原理深度解析:从基础到源码级理解
前端·javascript·react.js·前端框架·ecmascript
周胡杰3 小时前
鸿蒙接入flutter环境变量配置windows-命令行或者手动配置-到项目的创建-运行demo项目
javascript·windows·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
LuckyLay4 小时前
React百日学习计划——Deepseek版
前端·学习·react.js
gxn_mmf4 小时前
典籍知识问答重新生成和消息修改Bug修改
前端·bug
hj10435 小时前
【fastadmin开发实战】在前端页面中使用bootstraptable以及表格中实现文件上传
前端
乌夷5 小时前
axios结合AbortController取消文件上传
开发语言·前端·javascript
晓晓莺歌5 小时前
图片的require问题
前端