Skip to content

fix(table-render): 数据源中的 React 元素被 object 判断吞掉导致单元格空白 - #1740

Open
Sunnan1998 wants to merge 1 commit into
alibaba:masterfrom
Sunnan1998:patch-1
Open

Sunnan1998 wants to merge 1 commit into
alibaba:masterfrom
Sunnan1998:patch-1

Conversation

@Sunnan1998

Copy link
Copy Markdown

问题

closes #1639

当 dataSource 的字段值直接是 JSX 时(为保持 columns 配置纯净,把渲染内容放在数据源中),
单元格渲染为空白。

原因

renderDomif (typeof val === 'object') return; 未区分普通对象与 React 元素。
React 元素本质是对象,因此命中该分支并返回 undefined。

方案

在 object 判断前加入 React.isValidElement(val) 放行,命中则直接返回该元素。

  • 位置选在 renderTags 之后、object 判断之前,为最小侵入点
  • item.enum 分支已有 !isObject(val) 守卫,React 元素原本不会进入,无冲突
  • 原先这类值在 object 判断处即返回 undefined,不会到达 code / copyable / ellipsis 等分支,
    因此对既有行为无任何变更

## 问题
closes alibaba#1639

当 dataSource 的字段值直接是 JSX(为保持 columns 配置纯净,把渲染内容放在数据源中)时,
单元格渲染为空。

## 原因
`renderDom` 中 `if (typeof val === 'object') return;` 未区分普通对象与 React 元素。
React 元素本质是对象,因此会命中该分支并返回 undefined。

## 方案
在 object 判断前加入 `React.isValidElement(val)` 放行,命中则直接返回该元素。

- 位置选在 `renderTags` 之后、object 判断之前,为最小侵入点
- `item.enum` 分支已有 `!isObject(val)` 守卫,React 元素原本不会进入,无冲突
- 对既有非元素值的行为完全无变更
@vercel

vercel Bot commented Sep 16, 2026

Copy link
Copy Markdown

@Sunnan1998 is attempting to deploy a commit to the Faberon Team on Vercel.

A member of the Team first needs to authorize it.

@CLAassistant

CLAassistant commented Sep 16, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@philousWen

philousWen commented Sep 16, 2026 via email

Copy link
Copy Markdown

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

数据源中包含JSX,单元格中数据无法正常渲染

3 participants