vue中slot插槽的参数汇总及使用方案

 更新时间:2024年03月15日 08:20:13   作者:背着红书包上学  
Vue.js中的插槽(slot)是一种机制,允许你在组件的模板中预留一些位置,以便父组件可以将任意内容插入到这些位置,这使得组件更加灵活和可复用,本文主要介绍了vue中slot插槽的参数汇总及使用方案,需要的朋友可以参考下

小小插槽一会标签<slot></slot>,一会属性v-slot,一会#的,到底是怎么用,列个表一眼看明白。

默认插槽具名插槽作用域插槽
定义<slot></slot><slot name="header"></slot>v-bind:user="user"
使用v-slotv-slot:headerv-slot="slotProps"
v-slot:default="{ user }"
v-slot:other="slotProps"
缩写使用#default#header#default="{ user }"

注意 v-slot 只能添加在 <template> 上

最简单的定义及使用

<button>
    <slot>这是当使用的时候没传参的时候显示的内容</slot>
</button>
<child>编辑</child>
<button>编辑</button>

定义的child组件,如果没有写<slot></slot>那使用的时候不管<child></child>标签里面写什么内容都会丢失。

定义<slot></slot>后,如果<child></child>使用的时候里面什么都没写那渲染结果为<slot></slot>标签里面的内容。

具名插槽的使用

一个不带 name 的 <slot> 出口会带有隐含的名字“default”。

<div class="title">
    <slot>标题位置</slot>
</div>
<div class="subtitle">
    <slot name="subTitle">这是副标题</slot>
</div>
<child>
    默认插槽,可以写template v-slot:default也可以不写
    <h3>我还能加个标签</h3>
    <template v-slot:subtitle>这是副标题</template>
    这个地方也是默认插槽里面的
</child>
<div class="title">
    默认插槽,可以写template v-slot:default也可以不写
    <h3>我还能加个标签</h3>
    这个地方也是默认插槽里面的
</div>
<div class="subtitle">这是副标题</div>

任何没有被包裹在带有 v-slot 的 <template> 中的内容都会被视为默认插槽的内容。

然而,如果想更明确一些,仍然可以在一个 <template> 中包裹默认插槽的内容

作用域插槽默认使用方法

父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的。

想让插槽内容能够访问子组件中才有的数据就用到了作用域

<div class="title">
    <slot v-bind:user="user">{{ user.firstName }}</slot>
    <!-- 简写:
    <slot :user="user">{{ user.firstName }}</slot> -->
</div>
<script setup>
import { reactive } from "vue";
const user = reactive({
  firstName: "Zhang",
  lastName: "San",
});
</script>

独占默认插槽的缩写语法

<child v-slot="slotProps">
    我的名字是{{ slotProps.user.lastName }}
</child>
<div class="title">我的名字是San</div>

终级 - 作用域+命名插槽使用方法

只要出现多个插槽,请始终为所有的插槽使用完整的基于 <template> 的语法

<div class="title">
      <slot :user="user">标题位置</slot>
</div>
<div class="subtitle">
      <slot name="subTitle" :user="user">这是副标题</slot>
</div>
<script setup>
import { reactive } from "vue";
const user = reactive({
  firstName: "Zhang",
  lastName: "San",
});
</script>
<child>
    <template v-slot="slotProps">
      有命名插槽的时候v-slot就不能写到child标签里面了 {{slotProps.user.firstName}}
    </template>
    <template v-slot:subTitle="{user}">{{user.lastName}}</template>
</child>
<child>
    <template #default="{ user }">
      有命名插槽的时候v-slot就不能写到child标签里面了 {{ user.firstName }}
    </template>
    <template #subTitle="{ user: { lastName } }">{{ lastName }}</template>
  </child>
<div class="title">有命名插槽的时候v-slot就不能写到child标签里面了 Zhang</div>
<div class="subtitle">San</div>

到此这篇关于vue中slot插槽的参数汇总及使用方案的文章就介绍到这了,更多相关vue slot插槽汇总及使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue 路由 过渡动效 数据获取方法

    Vue 路由 过渡动效 数据获取方法

    这篇文章主要介绍了Vue 路由 过渡动效 数据获取方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • vue3自定义指令实现按钮防抖示例详解

    vue3自定义指令实现按钮防抖示例详解

    这篇文章主要为大家介绍了vue3自定义指令实现按钮防抖示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • echarts实现获取datazoom的起始值(包括x轴和y轴)

    echarts实现获取datazoom的起始值(包括x轴和y轴)

    这篇文章主要介绍了echarts实现获取datazoom的起始值(包括x轴和y轴),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue codemirror实现在线代码编译器效果

    vue codemirror实现在线代码编译器效果

    这篇文章主要介绍了vue-codemirror实现在线代码编译器 ,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • vuejs+element-ui+laravel5.4上传文件的示例代码

    vuejs+element-ui+laravel5.4上传文件的示例代码

    本篇文章主要介绍了vuejs+element-ui+laravel5.4上传文件的示例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • 修改vue+webpack run build的路径方法

    修改vue+webpack run build的路径方法

    今天小编就为大家分享一篇修改vue+webpack run build的路径方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue透传Attributes使用解析

    Vue透传Attributes使用解析

    本文主要介绍了Vue透传Attributes使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 在vue2.x里面简单使用socketio问题

    在vue2.x里面简单使用socketio问题

    这篇文章主要介绍了在vue2.x里面简单使用socketio问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue中Vue router和axios的封装使用教程

    Vue中Vue router和axios的封装使用教程

    当用户登录后,后台会返回一个token给前端,前端下次进入首页后,会先判断token是否过期,如果过期自动进入登录页面,本文给大家介绍Vue中Vue router和axios的封装使用教程,感兴趣的朋友一起看看吧
    2023-11-11
  • 详解​Vue虚拟DOM如何提高前端开发效率

    详解​Vue虚拟DOM如何提高前端开发效率

    这篇文章主要为大家介绍了详解​Vue虚拟DOM如何提高前端开发效率,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12

最新评论