import React, { useMemo } from 'react' import { useSetState, useMemoizedFn, useLatest } from 'ahooks' import { SetState } from 'ahooks/es/useSetState' import { useProps } from '../../utils' import { ProTableBuiltInActionType, ProTableTableActionType, ProTableBuiltInActionNames } from './types' import Actions from './Actions' // 表格动作 export default function useTableActions(): { tableActions: Record tableActionConfigs: ProTableTableActionType[] setTableActions: SetState> renderTableActions: () => JSX.Element } { const { actions: tableActionConfigs, builtInActions } = useProps() const latestTableActionConfigs = useLatest(tableActionConfigs) const [tableActions, setTableActions] = useSetState>({ // export: , // print: , ...(builtInActions?.actions ?? {}), }) const latestTableActions = useLatest(tableActions) const renderTableActions = useMemoizedFn(() => ( latestTableActionConfigs.current as any} getBuiltInActions={() => latestTableActions.current} /> )) return { tableActions, tableActionConfigs: useMemo( () => (tableActionConfigs ?? []) .filter(Boolean) .filter( (action) => (action as any)?.hidden !== true, ) as ProTableTableActionType[], [tableActionConfigs], ), setTableActions, renderTableActions, } }