diff --git a/packages/ui/list/src/List.tsx b/packages/ui/list/src/List.tsx index 68a7979ee..aebdce2e4 100644 --- a/packages/ui/list/src/List.tsx +++ b/packages/ui/list/src/List.tsx @@ -52,8 +52,10 @@ export const List = forwardRef( }, ref ) => { - - data = useMemo((): ListDataItem[] => transformData(data,fieldNames), [data,fieldNames]) + const transformedData = useMemo((): ListDataItem[] => transformData(data, fieldNames), [ + data, + fieldNames, + ]) const cls = cx(prefixCls, className, { [`${prefixCls}--bordered`]: bordered, @@ -78,9 +80,9 @@ export const List = forwardRef( return (
- {data && data.length > 0 ? ( + {transformedData && transformedData.length > 0 ? (
    - {data.map((item, index) => { + {transformedData.map((item, index) => { return renderListItem(item, index) })}
diff --git a/packages/ui/list/src/utils.ts b/packages/ui/list/src/utils.ts index 57764e752..e14752336 100644 --- a/packages/ui/list/src/utils.ts +++ b/packages/ui/list/src/utils.ts @@ -1,33 +1,32 @@ -import { HiBaseFieldNames } from "@hi-ui/core" -import { ListDataItem } from "./types" +import { HiBaseFieldNameKeys, HiBaseFieldNames } from '@hi-ui/core' +import { ListDataItem, ListActionPlacementEnum } from './types' -export const transformData = ( +export const transformData = ( data: ListDataItem[], fieldNames?: HiBaseFieldNames - ) : ListDataItem[] => { - - const getKeyFields = (node: any, key: any)=> { - if(fieldNames){ - return node[(fieldNames as any)[key] || key] - } - return node[key] +): ListDataItem[] => { + const getKeyFields = (node: ListDataItem, key: HiBaseFieldNameKeys) => { + if (fieldNames) { + return node[(fieldNames[key] || key) as keyof ListDataItem] } + return node[key as keyof ListDataItem] + } - const traverseNode = (node: ListDataItem ): ListDataItem => { - const newNode: ListDataItem = {...node} + const traverseNode = (node: ListDataItem): ListDataItem => { + const newNode: ListDataItem = { ...node } - newNode.title = getKeyFields(newNode, 'title') - newNode.description = getKeyFields(newNode, 'description') - newNode.extra = getKeyFields(newNode, 'extra') - newNode.avatar = getKeyFields(newNode, 'avatar') - newNode.action = getKeyFields(newNode, 'action') - newNode.actionPlacement = getKeyFields(newNode, 'actionPlacement') + newNode.title = getKeyFields(newNode, 'title' as HiBaseFieldNameKeys) + newNode.description = getKeyFields(newNode, 'description' as HiBaseFieldNameKeys) + newNode.extra = getKeyFields(newNode, 'extra' as HiBaseFieldNameKeys) + newNode.avatar = getKeyFields(newNode, 'avatar' as HiBaseFieldNameKeys) + newNode.action = getKeyFields(newNode, 'action' as HiBaseFieldNameKeys) + newNode.actionPlacement = getKeyFields( + newNode, + 'actionPlacement' as HiBaseFieldNameKeys + ) as ListActionPlacementEnum - return newNode + return newNode } - return data.map(node => traverseNode(node)) - - + return data.map((node) => traverseNode(node)) } -