import React, { useState } from 'react'; import { Button, ButtonProps, Confirm } from 'react-admin'; interface Props extends Pick { component?: React.ComponentType; confirmTitle?: string; confirmContent?: string; onConfirm?: () => void; } export const ButtonWithConfirm: React.FC = React.memo((props) => { const { component: ButtonComponent = Button, confirmTitle = '确认要进行该操作么?', confirmContent = '该操作不可撤回', } = props; const [open, setOpen] = useState(false); const [loading, setLoading] = useState(false); return ( <> { setOpen(true); }} label={props.label} /> { setLoading(true); props.onConfirm?.(); setLoading(false); setOpen(false); }} onClose={() => { setOpen(false); }} /> ); }); ButtonWithConfirm.displayName = 'ButtonWithConfirm';