From a3922939c98cb0adeb49ec0c616765e0b9b642fa Mon Sep 17 00:00:00 2001 From: JR Date: Tue, 29 Nov 2022 16:57:26 +0800 Subject: [PATCH] Table: fix input stuck in table with large data --- packages/table/src/table-body.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/table/src/table-body.js b/packages/table/src/table-body.js index cd22348ff..b940e746b 100644 --- a/packages/table/src/table-body.js +++ b/packages/table/src/table-body.js @@ -33,6 +33,8 @@ export default { render(h) { const data = this.data || []; + const { store } = this; + const context = this.context || this.table.$vnode.context; return ( { data.reduce((acc, row) => { - return acc.concat(this.wrappedRowRender(row, acc.length)); + return acc.concat(this.wrappedRowRender(store, context, row, acc.length)); }, []) } @@ -320,7 +322,7 @@ export default { table.$emit(`row-${name}`, row, column, event); }, - rowRender(row, $index, treeRowData) { + rowRender(store, context, row, $index, treeRowData) { const { treeIndent, columns, firstDefaultColumnIndex } = this; const rowClasses = this.getRowClass(row, $index); let display = true; @@ -346,8 +348,8 @@ export default { columns={columns} row={row} index={$index} - store={this.store} - context={this.context || this.table.$vnode.context} + store={store} + context={context} firstDefaultColumnIndex={firstDefaultColumnIndex} treeRowData={treeRowData} treeIndent={treeIndent} @@ -366,13 +368,12 @@ export default { ); }, - wrappedRowRender(row, $index) { - const store = this.store; + wrappedRowRender(store, context, row, $index) { const { isRowExpanded, assertRowKey } = store; const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey } = store.states; if (this.hasExpandColumn && isRowExpanded(row)) { const renderExpanded = this.table.renderExpanded; - const tr = this.rowRender(row, $index); + const tr = this.rowRender(store, context, row, $index); if (!renderExpanded) { console.error('[Element Error]renderExpanded is required.'); return tr; @@ -405,7 +406,7 @@ export default { treeRowData.loading = cur.loading; } } - const tmp = [this.rowRender(row, $index, treeRowData)]; + const tmp = [this.rowRender(store, context, row, $index, treeRowData)]; // 渲染嵌套数据 if (cur) { // currentRow 记录的是 index,所以还需主动增加 TreeTable 的 index @@ -439,7 +440,7 @@ export default { } } i++; - tmp.push(this.rowRender(node, $index + i, innerTreeRowData)); + tmp.push(this.rowRender(store, context, node, $index + i, innerTreeRowData)); if (cur) { const nodes = lazyTreeNodeMap[childKey] || node[childrenColumnName]; traverse(nodes, cur); @@ -453,7 +454,7 @@ export default { } return tmp; } else { - return this.rowRender(row, $index); + return this.rowRender(store, context, row, $index); } } }