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元
基础悬浮提示
原始数据:
"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条 | | |
| 备注 | | | 卷烟真假待鉴定 | | |
|----------|------|------|----------|------|------|
| 黄山(印象一品) | 条 | 75 | 以下空白 | | |
| 白沙(硬) | 条 | 174 | | | |
| 娇子(蓝时代) | 条 | 63 | | | |
| 黄山(新一品) | 条 | 220 | | | |
| 金圣(庐山) | 条 | 40 | | | |
| 钻石(硬特醇) | 条 | 342 | | | |
| 共计:(品种)6个 | | | 总计:(数量)914条 | | |
| 备注 | | | 卷烟真假待鉴定 | | |
渲染结果:
库存详情
卷烟库存明细表
表格格式悬浮提示 - 深色主题
配置:
tooltipProps: { placement: "top", theme: "dark", rich: true }
Markdown源码:
| 品种规格 | 单位 | 数量 | 品种规格 | 单位 | 数量 |
|----------|------|------|----------|------|------|
| 黄山(印象一品) | 条 | 75 | 以下空白 | | |
| 白沙(硬) | 条 | 174 | | | |
| 娇子(蓝时代) | 条 | 63 | | | |
| 黄山(新一品) | 条 | 220 | | | |
| 金圣(庐山) | 条 | 40 | | | |
| 钻石(硬特醇) | 条 | 342 | | | |
| 共计:(品种)6个 | | | 总计:(数量)914条 | | |
| 备注 | | | 卷烟真假待鉴定 | | |
|----------|------|------|----------|------|------|
| 黄山(印象一品) | 条 | 75 | 以下空白 | | |
| 白沙(硬) | 条 | 174 | | | |
| 娇子(蓝时代) | 条 | 63 | | | |
| 黄山(新一品) | 条 | 220 | | | |
| 金圣(庐山) | 条 | 40 | | | |
| 钻石(硬特醇) | 条 | 342 | | | |
| 共计:(品种)6个 | | | 总计:(数量)914条 | | |
| 备注 | | | 卷烟真假待鉴定 | | |
渲染结果:
销售统计
月度销售统计表