renderText 增强型文本渲染器

文本处理 样式增强 条件渲染 漂浮提示

renderText 增强型文本渲染器提供了全方位的文本展示解决方案,支持多种文本转换、格式化、条件样式和增强型漂浮提示,满足各种复杂场景的展示需求。

API参数

参数名 类型 描述 是否必填 默认值
transform String 文本转换类型:uppercase/lowercase/capitalize -
format String 特定格式处理:phone/idcard/bankcard/date/number -
prefix String 文本前缀 -
suffix String 文本后缀 -
nullValue String 空值显示文本 "-"
maxLength Number 最大显示长度 -
ellipsis Boolean 是否显示省略号 true
tooltip Boolean 是否启用悬浮提示 false
tooltipProps Object 悬浮提示配置 -
tooltipProps.theme
可选值: dark、light、primary、success、warning、error
String 提示框主题 "dark"
tooltipProps.placement
可选值: top、bottom、left、right
String 提示框位置 "top"
tooltipProps.content String 提示内容 -
tooltipProps.rich Boolean 是否使用富文本提示 false
tooltipProps.header String 富文本提示标题 -
tooltipProps.footer String 富文本提示页脚 -
highlight Object 高亮配置 -
conditional Array 条件样式规则 -
copyable Boolean 是否可复制 false
link Boolean/Object 转为链接 false

使用示例

基本使用 - 文本转换
{
  "id": "title",
  "label": "标题",
  "dataIndex": "title",
  "render": "renderText",
  "renderProps": {
    "transform": "capitalize",
    "nullValue": "无标题"
  }
}
数据脱敏
{
  "id": "phone",
  "label": "手机号",
  "dataIndex": "phone",
  "render": "renderText",
  "renderProps": {
    "format": "phone",
    "copyable": true
  }
}
带前缀后缀
{
  "id": "price",
  "label": "价格",
  "dataIndex": "price",
  "render": "renderText",
  "renderProps": {
    "prefix": "¥",
    "suffix": "元",
    "format": "number"
  }
}
链接转换
{
  "id": "website",
  "label": "网站",
  "dataIndex": "website",
  "render": "renderText",
  "renderProps": {
    "link": {
      "target": "_blank",
      "urlPrefix": "https://"
    }
  }
}
基础悬浮提示
{
  "id": "productDescription",
  "label": "产品描述",
  "dataIndex": "productDescription",
  "render": "renderText",
  "renderProps": {
    "maxLength": 50,
    "ellipsis": true,
    "tooltip": true,
    "tooltipProps": {
      "placement": "top",
      "theme": "dark",
      "content": "data.productFullDescription"
    }
  }
}
增强型悬浮提示框
{
  "id": "stockInfo",
  "label": "库存状态",
  "dataIndex": "stockStatus",
  "render": "renderText",
  "renderProps": {
    "tooltip": true,
    "tooltipProps": {
      "placement": "right",
      "theme": "primary",
      "rich": true,
      "header": "库存详情",
      "content": "data.stockDetail",
      "footer": "更新时间: {{data.stockUpdateTime}}"
    }
  }
}
增强型提示框 - 浅色主题
{
  "id": "performance",
  "label": "性能指标",
  "dataIndex": "performance",
  "render": "renderText",
  "renderProps": {
    "tooltip": true,
    "tooltipProps": {
      "placement": "top",
      "theme": "light",
      "rich": true,
      "header": "系统性能报告",
      "content": "data.performanceDetail",
      "footer": "更新时间: {{data.updateTime}}"
    },
    "conditional": [
      { "condition": "data.status === 'normal'", "style": { "color": "#3b82f6", "fontWeight": "medium" } }
    ]
  }
}
增强型提示框 - 深色主题
{
  "id": "salesTrend",
  "label": "销售趋势",
  "dataIndex": "salesTrend",
  "render": "renderText",
  "renderProps": {
    "tooltip": true,
    "tooltipProps": {
      "placement": "bottom",
      "theme": "dark",
      "rich": true,
      "header": "销售数据分析",
      "content": "data.salesDetail",
      "footer": "数据来源: 销售管理系统"
    },
    "conditional": [
      { "condition": "data.growth > 10", "style": { "color": "#22c55e", "fontWeight": "medium" } }
    ]
  }
}
表格格式悬浮提示
{
  "id": "inventoryDetail",
  "label": "库存详情",
  "dataIndex": "inventoryStatus",
  "render": "renderText",
  "renderProps": {
    "tooltip": true,
    "tooltipProps": {
      "placement": "top",
      "theme": "light",
      "rich": true,
      "header": "卷烟库存明细表",
      "content": "{{data.inventoryTableMarkdown}}",
      "footer": "备注:卷烟真假待鉴定"
    }
  }
}
条件样式
{
  "id": "status",
  "label": "订单状态",
  "dataIndex": "status",
  "render": "renderText",
  "renderProps": {
    "conditional": [
      { "condition": "value === '待处理'", "style": { "color": "#f59e0b" } },
      { "condition": "value === '处理中'", "style": { "color": "#3b82f6" } },
      { "condition": "value === '已完成'", "style": { "color": "#22c55e", "fontWeight": "bold" } },
      { "condition": "value === '已取消'", "style": { "color": "#ef4444" } }
    ]
  }
}
表格格式悬浮提示 - 深色主题
{
  "id": "salesStatistics",
  "label": "销售统计",
  "dataIndex": "salesTrend",
  "render": "renderText",
  "renderProps": {
    "tooltip": true,
    "tooltipProps": {
      "placement": "top",
      "theme": "dark",
      "rich": true,
      "header": "月度销售统计表",
      "content": "{{data.salesTableMarkdown}}",
      "footer": "数据更新时间: {{data.updateTime}}"
    }
  }
}
Markdown表格变量示例
// 数据源中的markdown表格变量示例
data: {
  inventoryTableMarkdown: `
| 品种规格       | 单位 | 数量 | 品种规格       | 单位 | 数量 |
|----------------|------|------|----------------|------|------|
| 黄山(印象一品) | 条   | 75   | 以下空白       |      |      |
| 白沙(硬)     | 条   | 174  |                |      |      |
| 娇子(蓝时代) | 条   | 63   |                |      |      |
| 黄山(新一品) | 条   | 220  |                |      |      |
| 金圣(庐山)   | 条   | 40   |                |      |      |
| 钻石(硬特醇) | 条   | 342  |                |      |      |
| 共计:(品种)6个 |      |      | 总计:(数量)914条 |      |      |
| 备注           |      |      | 卷烟真假待鉴定 |      |      |
  `,
  salesTableMarkdown: `
| 品种规格       | 单位 | 数量 | 品种规格       | 单位 | 数量 |
|----------------|------|------|----------------|------|------|
| 黄山(印象一品) | 条   | 75   | 以下空白       |      |      |
| 白沙(硬)     | 条   | 174  |                |      |      |
| 娇子(蓝时代) | 条   | 63   |                |      |      |
| 黄山(新一品) | 条   | 220  |                |      |      |
| 金圣(庐山)   | 条   | 40   |                |      |      |
| 钻石(硬特醇) | 条   | 342  |                |      |      |
| 共计:(品种)6个 |      |      | 总计:(数量)914条 |      |      |
| 备注           |      |      | 卷烟真假待鉴定 |      |      |
  `,
  updateTime: "2023-10-15 16:30:42"
}
实际项目中的Markdown渲染实现
// 方案一:使用Markdown解析库 (如 marked.js)
import { marked } from 'marked';

function renderTooltipContent(markdownContent) {
  // 解析markdown为HTML
  const htmlContent = marked.parse(markdownContent);
  
  // 渲染到tooltip容器中
  const tooltipBody = document.querySelector('.tooltip-body');
  tooltipBody.innerHTML = htmlContent;
  
  // 添加通用样式类
  const table = tooltipBody.querySelector('table');
  if (table) {
    table.classList.add('markdown-rendered-table');
  }
}

// 方案二:使用React Markdown组件
import ReactMarkdown from 'react-markdown';

function TooltipContent({ markdownContent }) {
  return (
    <div className="tooltip-body">
      <ReactMarkdown 
        components={{
          table: ({node, ...props}) => 
            <table className="markdown-rendered-table" {...props} />
        }}
      >
        {markdownContent}
      </ReactMarkdown>
    </div>
  );
}

// 方案三:使用Vue Markdown组件
<template>
  <div class="tooltip-body">
    <VueMarkdown 
      :source="markdownContent" 
      :table-class="'markdown-rendered-table'"
    />
  </div>
</template>

// 通用样式控制方案:通过CSS类和数据属性
.markdown-rendered-table {
  /* 基础表格样式 */
}

.markdown-rendered-table[data-theme="dark"] {
  /* 深色主题样式 */
}

.markdown-rendered-table[data-highlight="true"] {
  /* 高亮样式 */
}

// 使用示例
const tooltipProps = {
  placement: "top",
  theme: "light", 
  rich: true,
  header: "数据详情",
  content: "{{data.tableMarkdown}}", // 动态markdown内容
  footer: "更新时间: {{data.updateTime}}"
};

渲染效果

文本转换
原始数据:"hello world"
渲染结果:Hello World
电话脱敏
原始数据:"13812345678"
渲染结果:138****5678
带前缀后缀
原始数据:99.99
渲染结果:¥99.99元
链接转换
原始数据:"example.com"
渲染结果:example.com
基础悬浮提示
原始数据:"RapidCore是一个高效的低代码开发框架..."
渲染结果: RapidCore是一个高效的低代码开发框架...
RapidCore是一个高效的低代码开发框架,可以帮助开发者快速构建企业级应用,提供了丰富的组件和灵活的配置选项,支持多种数据源和自定义扩展。
主题色提示框
原始数据:"库存紧张"
渲染结果: 库存紧张
当前库存仅剩5件,低于安全库存(10件),请及时补货
增强型提示框 - 浅色主题
原始数据:"性能分析"
渲染结果: 性能分析
系统性能报告
CPU使用率: 32%
内存使用率: 76%
磁盘空间: 245GB/500GB
增强型提示框 - 深色主题
原始数据:"销售趋势"
渲染结果: 销售趋势
销售数据分析
本月销售额: ¥258,432
环比增长: +15.8%
销售热点: 电子产品
条件样式
原始值:"待处理"
渲染结果: 待处理
原始值:"处理中"
渲染结果: 处理中
原始值:"已完成"
渲染结果: 已完成
原始值:"已取消"
渲染结果: 已取消
带条件的悬浮提示
原始值:95
渲染结果: 95
优秀:得分在90分以上
原始值:75
渲染结果: 75
良好:得分在60-90分之间
深色主题 (Dark)
配置:tooltipProps: { theme: "dark" }
渲染结果: 深色主题
这是深色主题提示框
浅色主题 (Light)
配置:tooltipProps: { theme: "light" }
渲染结果: 浅色主题
这是浅色主题提示框
主题色 (Primary)
配置:tooltipProps: { theme: "primary" }
渲染结果: 主题色
这是主题色提示框
成功色 (Success)
配置:tooltipProps: { theme: "success" }
渲染结果: 成功色
这是成功色提示框
警告色 (Warning)
配置:tooltipProps: { theme: "warning" }
渲染结果: 警告色
这是警告色提示框
错误色 (Error)
配置:tooltipProps: { theme: "error" }
渲染结果: 错误色
这是错误色提示框
信息色 (Info)
配置:tooltipProps: { theme: "info" }
渲染结果: 信息色
这是信息色提示框
表格格式悬浮提示
配置:tooltipProps: { placement: "top", theme: "light", rich: true }
Markdown源码:
| 品种规格 | 单位 | 数量 | 品种规格 | 单位 | 数量 |
|----------|------|------|----------|------|------|
| 黄山(印象一品) | 条 | 75 | 以下空白 | | |
| 白沙(硬) | 条 | 174 | | | |
| 娇子(蓝时代) | 条 | 63 | | | |
| 黄山(新一品) | 条 | 220 | | | |
| 金圣(庐山) | 条 | 40 | | | |
| 钻石(硬特醇) | 条 | 342 | | | |
| 共计:(品种)6个 | | | 总计:(数量)914条 | | |
| 备注 | | | 卷烟真假待鉴定 | | |
渲染结果: 库存详情
卷烟库存明细表
表格格式悬浮提示 - 深色主题
配置:tooltipProps: { placement: "top", theme: "dark", rich: true }
Markdown源码:
| 品种规格 | 单位 | 数量 | 品种规格 | 单位 | 数量 |
|----------|------|------|----------|------|------|
| 黄山(印象一品) | 条 | 75 | 以下空白 | | |
| 白沙(硬) | 条 | 174 | | | |
| 娇子(蓝时代) | 条 | 63 | | | |
| 黄山(新一品) | 条 | 220 | | | |
| 金圣(庐山) | 条 | 40 | | | |
| 钻石(硬特醇) | 条 | 342 | | | |
| 共计:(品种)6个 | | | 总计:(数量)914条 | | |
| 备注 | | | 卷烟真假待鉴定 | | |
渲染结果: 销售统计
月度销售统计表