18 lines
577 B
TypeScript
18 lines
577 B
TypeScript
|
import { Button, ButtonProps } from 'antd';
|
||
|
import React, { useState } from 'react';
|
||
|
import { useEvent } from '../hooks/useEvent';
|
||
|
|
||
|
export const AutoLoadingButton: React.FC<ButtonProps> = React.memo((props) => {
|
||
|
const [loading, setLoading] = useState(false);
|
||
|
|
||
|
const handleClick = useEvent(
|
||
|
async (e: React.MouseEvent<HTMLElement, MouseEvent>) => {
|
||
|
setLoading(true);
|
||
|
await props.onClick?.(e);
|
||
|
setLoading(false);
|
||
|
}
|
||
|
);
|
||
|
return <Button loading={loading} {...props} onClick={handleClick} />;
|
||
|
});
|
||
|
AutoLoadingButton.displayName = 'AutoLoadingButton';
|