diff --git a/src/components/Table/src/hooks/useDataSource.ts b/src/components/Table/src/hooks/useDataSource.ts index 6dfd15cf0be70e1adbe8cc888a9cab2be033cf97..d3bfa3db3f41ae0f4171f123a1ff9c2d1d8bac8d 100644 --- a/src/components/Table/src/hooks/useDataSource.ts +++ b/src/components/Table/src/hooks/useDataSource.ts @@ -155,12 +155,16 @@ export function useDataSource( ): Recordable | undefined { if (!dataSourceRef.value || dataSourceRef.value.length == 0) return; const rowKeyName = unref(getRowKey); - if (typeof rowKeyName !== 'string') { + if (!rowKeyName) { return; } - const row = dataSourceRef.value.find( - (r) => Reflect.has(r, rowKeyName as string) && r[rowKeyName as string] === rowKey - ); + const row = dataSourceRef.value.find((r) => { + if (typeof rowKeyName === 'function') { + return (rowKeyName(r) as string) === rowKey; + } else { + return Reflect.has(r, rowKeyName) && r[rowKeyName] === rowKey; + } + }); if (row) { for (const field in row) { if (Reflect.has(record, field)) row[field] = record[field];