import React, { CSSProperties, useCallback } from 'react' import { VariableSizeGrid } from 'react-window' import { MenuItemT, MenuListItem } from './menu-list-item' export interface MenuListProps { rect: { left: number right: number top: number bottom: number } mainIndex: number menulist: MenuItemT[] changeCheckState: (mainIndex: number, subIndex: number, check: boolean, isRadio?: boolean) => void } type RendererProps = { columnIndex: number rowIndex: number style: CSSProperties } export const MenuList: React.FC = ({ rect, mainIndex, menulist, changeCheckState }) => { const getRowHeight = useCallback( (index: number): number => { const menuListItem = menulist[index] if (menuListItem.visiable === false) { return 0 } else if (menuListItem.type === 'separator') { return 10 } else { return 30 } }, [menulist] ) const renderMenuList = useCallback( ({ rowIndex, style }: RendererProps) => ( ), [menulist, changeCheckState, mainIndex] ) const menuListHeight = menulist.map((l, index) => getRowHeight(index)).reduce((a, b) => a + b, 0) return (
240} height={menuListHeight} rowHeight={getRowHeight} width={240} > {renderMenuList}
) }