首页 > 其他分享 >2024-07-29 如何判断自定义组件中的slot是否被传入值==》defineSlots或this.$slots

2024-07-29 如何判断自定义组件中的slot是否被传入值==》defineSlots或this.$slots

时间:2024-07-29 09:56:39浏览次数:13  
标签:slot 判断 07 自定义 default defineSlots 组件 name

假如你的自定义组件是这样:

<template>
    <div>
        <button :class="`btn-${type}`">
            <slot></slot>
        </button>
    </div>
</template>

<script>
export default {
    name: "tButton",
};
</script>

<script setup>
const props = defineProps({
    type: {
        type: String,
        default: "primary",
    },
});
</script>

那么怎么判断你在使用时,比如<t-button></t-button>,在该组件里面有没有使用到插槽slot呢?

解决方案:在tbutton组件里面的onMountd钩子判断slot是否有值

<template>
    <div>
        <button :class="`btn-${type}`">
            <slot></slot>
        </button>
    </div>
</template>

<script>
export default {
    name: "tButton",
};
</script>

<script setup>
import {defineSlots, onMounted} from "vue";
const props = defineProps({
    type: {
        type: String,
        default: "primary",
    },
});
const isHaveSlot = defineSlots();

onMounted(() => {
    console.log("isHaveSlot",!!isHaveSlot.default,isHaveSlot);
});
</script>

引入defineSlots、onMounted钩子,把defineSlots赋值给变量a,在onMountd里面判断a是否有值

如果你的slot没有写name值,那么默认就是一个default,如果你写了多个slot且没有name值,那么slot还是只有default作为name值,判断该值是否为空即可

如果你的slot定义了name值为uisk,那么你就要判断a.uisk是否为空了

没写就default,有写就用你写的name

注意:上面是vue3的用法,如果是vue2,那就直接在tbutton组件判断this.$slots的default是否为空,同理,有些name值,就判断this.$slots.你的name是否为空

ps:vue3中使用slot的name插槽用法:v-slot:你的name

 

标签:slot,判断,07,自定义,default,defineSlots,组件,name
From: https://www.cnblogs.com/iuniko/p/18329446

相关文章

  • ros2 自定义一个控制器
    在ROS2中,自定义一个控制器并进行使用涉及几个步骤,包括编写控制器代码、配置控制器参数、编写控制器启动文件以及在运行时加载和使用控制器。以下是一个详细的步骤指南:1.编写控制器代码首先,创建一个控制器类,该类继承自controller_interface::ControllerInterface。下面是一......
  • 自定义异常 - 捕获不继承自 BaseException 的类
    我正在尝试编写一些自定义异常处理,但不断遇到“TypeError:不允许捕获不从BaseException继承的类”错误的问题。我有一个名为NodeError的异常基类,它继承自Exception。从那里,我有几个继承自NodeError的自定义异常。web3模块使用requests模块与节点进行通信。我......
  • 日常学习--调用第三方接口和提供第三方接口时的注意事项--20240728
    1、调用第三方接口的注意事项   接口测试与验证:对第三方接口进行充分的测试,包括功能测试、性能测试和安全测试,确保接口的稳定性和安全性。 验证接口的可用性,包括接口地址、请求方式、请求参数、响应格式等是否正确。   参数校验与日志记录:在调用接口前,对请求......
  • 【科大讯飞笔试题汇总】2024-07-27-科大讯飞秋招提前批(研发岗)-三语言题解(Cpp/Java/
    ......
  • 24.07.28 周总结 (kotlin加深 + Android studio 学习)
    Kotlin学习子类的属性覆盖AndroidstudioAI解决问题......
  • 2024/07/28 每日一题
    LeetCode699掉落的方块方法1:暴力classSolution:deffallingSquares(self,positions:List[List[int]])->List[int]:n=len(positions);ans=[0]*n#记录每个方块落下后的高度fori,(left0,widen0)inenumerate(positions):......
  • LeetCode_sql_day07(579. 查询员工的累计薪水,2173.最多连胜的次数)
    描述:579.查询员工的累计薪水编写一个解决方案,在一个统一的表中计算出每个员工的 累计工资汇总 。员工的 累计工资汇总 可以计算如下:对于该员工工作的每个月,将 该月 和 前两个月 的工资 加 起来。这是他们当月的 3个月总工资和 。如果员工在前几个月没有为公......
  • SQL Server数据库的黑匣子:实现自定义日志记录
    SQLServer数据库的黑匣子:实现自定义日志记录在数据库管理中,日志记录是监控和审计数据库活动的重要手段。SQLServer提供了多种日志记录机制,但有时这些默认的日志记录可能无法满足特定的业务需求。在这种情况下,实现数据库的自定义日志记录就显得尤为重要。本文将详细介绍如......
  • pytorch中自定义onnx新算子并导出为onnx
    importtorchfromtorch.autogradimportFunctionimporttorch.onnx#Step1:DefinecustomPyTorchoperatorclassMyCustomOp(Function):@staticmethoddefforward(ctx,input):returninput+1@staticmethoddefsymbolic(g,input):......
  • Java基础07:基本运算符
    运算符运算符operatorJava语言支持如下运算符:算术运算符:+,-,*,/,%,++,--赋值运算符=关系运算符:>,<,>=,<=,==,!=instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>(了解!!!)条件运算符?:扩展赋值运算符:+=,-=,*=,/=二元运算符publicstaticvoidmain(Str......