import React, { useCallback, useState } from 'react'; import { Drawer } from 'antd'; import { DrawerProps } from 'antd/lib/drawer'; export type DrawerOverlayRender = (props: { close: () => void; }) => React.ReactNode; export type DrawerChildrenRender = (props: { open: () => void; }) => React.ReactNode; /** * Drawer触发器 */ export const DrawerTrigger: React.FC< { overlay?: DrawerOverlayRender; children?: DrawerChildrenRender; } & Omit > = (props) => { const [vis, setVis] = useState(false); const open = useCallback(() => setVis(true), []); const close = useCallback(() => setVis(false), []); const { children, overlay, ...DrawerProps } = props; return ( <> {overlay ? overlay({ close }) : <>} {children && children({ open })} ); }; export default DrawerTrigger;