Naive UI 级联选择器 Cascader的:render-lable怎么使用(Vue3 + TS)(鼠标悬停该条数据的时候展示全部内容)

项目场景:

在渲染Cascader级联选择器后,当文字过长的时候,多出来的部分会显示成省略号,这使我们不能很清晰的看到该条数据的完整信息,就需要加一个鼠标悬停展示完整内容。


解决方案:

vue:

javascript 复制代码
<n-cascader clearable v-model:value="unit" placeholder="所属地市" :title="unit" :options="options" check-strategy="child" @update-value="handleUpdateValue" :render-label="renderlabel" />

js:

javascript 复制代码
const unit = ref<string>()
const options = ref<CascaderOption[]>([
    {
      "value": "1",
      "label": "选项1",
      "disabled": false,
      "children": [
        {
          "value": "1-1",
          "label": "子选项1-1",
          "disabled": false,
          "children": [
            {
              "value": "1-1-1",
              "label": "孙选项1-1-1",
              "disabled": false
            }
          ]
        }
      ]
    },
    {
      "value": "2",
      "label": "选项2",
      "disabled": true,
      "children": [
        {
          "value": "2-1",
          "label": "子选项2-1",
          "disabled": false
        }
      ])
//这里其实就是创建了虚拟节点,这里就不赘述了,可以看前两篇笔记,有详细的解释
//这里解释一下 placement: 'left-end'  为什么可以在这里加这句话
//是因为Naive的 弹出提示 Tooltip组件支持placement属性,即popover 的弹出位置,
//我们这里是创建了一个NTooltip弹出提示的虚拟节点,传入的属性必须是这个NTooltip组件支持的属性才可以生效,
//换句话说就是h创建虚拟DOM的第二个参数设置的属性是传递给组件的,
const renderlabel = (option: { value?: string | number, label?: string }) => {
    return h(NTooltip, {
        placement: 'left-end'
    }, {
        trigger: () => h('span', option.label),
        default: () => {
            return h('span', {
                style: {
                    color: '#526ade',
                }
            }, option.label as string)
        },
    })
}
const handleUpdateValue = function (value: string, option: CascaderProps) {
 
}

总结来说,renderLabel 函数创建了一个带有提示的标签,当用户将鼠标悬停在标签上时,会显示一个提示框,提示框的内容和标签文本相同,但颜色可能会根据主题的不同而变化。这个函数通常用于下拉选择框组件中,为每个选项提供一个带有提示的标签。

相关推荐
weixin_460443565 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
子兮曰6 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
Cc.Y8 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
paopaokaka_luck8 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787059 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev9 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
by209999 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
笔墨登场说说9 小时前
flink bin/start-cluster.sh 帮我做成开机启动
开发语言·python
Sarvartha9 小时前
Lambda 表达式和函数式接口
java·开发语言
IMPYLH9 小时前
HTML 的 <video> 元素
前端·html