Skip to content

Conversation

cncolder
Copy link
Contributor

@cncolder cncolder commented Jun 25, 2020

@afc163 This seem like a typo. But it will slow down antd 4 table render.

Let me show you detail:

In a non-empty table. The rows is [[BodyRow], [BodyRow2] ...] currently. Every time user insert data into table. Existed rows will recreate even they have same keys. I think most user show table with pagination. So people ignore this for a long time.

This pr fix ant-design/ant-design#25224 , you can try reproduction demo in that issue. There are two gif show the difference between ant3 and ant4.

@codecov
Copy link

codecov bot commented Jun 25, 2020

Codecov Report

Merging #498 into master will not change coverage.
The diff coverage is 100.00%.

Impacted file tree graph

@@           Coverage Diff           @@
##           master     #498   +/-   ##
=======================================
  Coverage   99.70%   99.70%           
=======================================
  Files          23       23           
  Lines         670      670           
  Branches      191      191           
=======================================
  Hits          668      668           
  Misses          2        2           
Impacted Files Coverage Δ
src/Body/index.tsx 100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 90adbbd...0782dd6. Read the comment docs.

@afc163 afc163 requested a review from zombieJ June 28, 2020 13:26
@cncolder
Copy link
Contributor Author

@zombieJ 目前我通过复制 node_modules/rc-table/lib 文件夹, 修改编译后的代码, 之后用 webpack alias 指向新目录这种方式用在真实项目里, 对 antd <Table> 组件性能提升显著, 尤其是在行频繁变换位置时.

@zombieJ
Copy link
Member

zombieJ commented Jul 1, 2020

的确是一个手误,thx!

@zombieJ zombieJ merged commit 3e23dce into react-component:master Jul 1, 2020
@zombieJ
Copy link
Member

zombieJ commented Jul 1, 2020

+ rc-table@7.8.2

@afc163
Copy link
Member

afc163 commented Jul 1, 2020

是不是也能解决 ant-design/ant-design#25234

@zombieJ
Copy link
Member

zombieJ commented Jul 1, 2020

全部刷新是因为不知道 columns.render 里会用到什么,所以总是全量更新。和这个 PR 没关系。

@cncolder
Copy link
Contributor Author

cncolder commented Jul 1, 2020

columns.render 应该只影响 td 里面的内容吧, 25234 中提到删除行, 之后的所有 tr 重新渲染, 应该和我的问题相同.

@zombieJ
Copy link
Member

zombieJ commented Jul 2, 2020

删除行影响了 dataSource。你不知道 render 里有没有用到它所以也需要重新渲染:

const columns = [
  {
    // ...
    render: () => dataSource.length,
  },
];

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.

Table body row always rerender even set stable rowKey and return false from shouldCellUpdate

3 participants