Commit 448a4c2809672480f8f635d7cc4661554112598a

Authored by 无木
1 parent f62f378f

feat(table): updateTableDataRecord support functional rowKey

src/components/Table/src/hooks/useDataSource.ts
@@ -155,12 +155,16 @@ export function useDataSource( @@ -155,12 +155,16 @@ export function useDataSource(
155 ): Recordable | undefined { 155 ): Recordable | undefined {
156 if (!dataSourceRef.value || dataSourceRef.value.length == 0) return; 156 if (!dataSourceRef.value || dataSourceRef.value.length == 0) return;
157 const rowKeyName = unref(getRowKey); 157 const rowKeyName = unref(getRowKey);
158 - if (typeof rowKeyName !== 'string') { 158 + if (!rowKeyName) {
159 return; 159 return;
160 } 160 }
161 - const row = dataSourceRef.value.find(  
162 - (r) => Reflect.has(r, rowKeyName as string) && r[rowKeyName as string] === rowKey  
163 - ); 161 + const row = dataSourceRef.value.find((r) => {
  162 + if (typeof rowKeyName === 'function') {
  163 + return (rowKeyName(r) as string) === rowKey;
  164 + } else {
  165 + return Reflect.has(r, rowKeyName) && r[rowKeyName] === rowKey;
  166 + }
  167 + });
164 if (row) { 168 if (row) {
165 for (const field in row) { 169 for (const field in row) {
166 if (Reflect.has(record, field)) row[field] = record[field]; 170 if (Reflect.has(record, field)) row[field] = record[field];