-
vue中slot插槽的本质是函数
-
默认插槽: 一个名为default的函数
-
命名插槽: 一个名为插槽名的函数
-
作用域插槽: 一个带参数的函数
声明一个带有插槽的组件Card
- 正常写法
xml<template> <div> <slot name="title"/> <slot name="body"/> <slot :index="1" username="张三"/> </div> </template>- 下面这段代码和上面代码的作用是一样的, 每一个slot标签将来会编译成一个函数, 传递到组件内部.
- 没有name属性的slot会被编译为一个名为default的无参函数
- 有name属性的会被编译为一个以name属性值作为函数名的无参函数,
- 带有其他属性的slot标签会被编译为一个带参函数.
xml<script> import { h } from 'vue' export default { render() { // 在组件内部可以通过this.$slot获取插槽内容 // 调用具名插槽函数 const title = this.$slots.title() const body = this.$slots.body() // 调用默认作用域插槽函数 const defaults = this.$slots.default({ index: 1, username: '张三' }) return h('div', {}, [ defaults, title, body ]) } } </script>调用一个带有插槽的组件Card
xml<template> <div> <Card> <!-- 会被编译为一个名为title的无参函数const title = ()=>{}, 传递给Card组件--> <template #title> <h3>这是标题</h3> </template> <!-- 会被编译为一个名为body的无参函数const body = ()=>{}, 传递给Card组件--> <template #body> <div>这是段落</div> </template> <!-- 会被编译为一个名为default的带参函数const default = (args)=>{}, 传递给Card组件--> <template v-slot="{ index, username }"> <div>{{ index }}-{{ username }}</div> </template> </Card> </div> </template> <script setup> import Card from './Card.vue' </script> -
vue中插槽的本质是什么?
Bruce7922024-10-13 11:56
相关推荐
m0_587383003 小时前
无人自助拼豆系统落地开发实战指南 核心逻辑实现与部署经验分享.Hypocritical.4 小时前
SpringBoot+Vue 前后端分离项目部署到云服务器溪语流沙5 小时前
【Web全栈进阶】Vue3起步:组件、模板语法、响应式数据志尊宝7 小时前
Vue3 零基础每日笔记(081):富文本编辑器集成 wangEditor 5——封装志尊宝8 小时前
Vue3 零基础每日笔记(080):Vue3 + ECharts 数据可视化——封装可复用图表组件斯内普吖8 小时前
(开源)校园充电宝租借管理系统实战指南 基于 Java + SSM + Vue + MySQLmldong10 小时前
一个 npm 包,九页审批中心:Vue3 项目接上工作流引擎高级程序源18 小时前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计WeiXin_DZbishe18 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217WeiXin_DZbishe20 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173