1234567891011121314151617181920212223242526272829303132333435 |
- import React, { useState, useEffect } from 'react';
- import Toast from '../toast';
- import { ToastInstance } from '@douyinfe/semi-foundation/toast/toastFoundation';
- interface HookToastProps extends ToastInstance{
- afterClose: (id: string) => void;
- }
- const HookToast = ({ afterClose, ...config }: HookToastProps, ref: React.Ref<any>) => {
- const [visible, setVisible] = useState(true);
- const close = () => {
- setVisible(false);
- };
- React.useImperativeHandle(ref, () => ({
- close: () => {
- setVisible(false);
- }
- }));
- useEffect(() => {
- if (!visible) {
- afterClose(config.id);
- }
- }, [visible]);
- return visible ? (
- <Toast
- {...config}
- close={close}
- />
- ) : null;
- };
- export default React.forwardRef(HookToast);
|