123456789101112131415161718192021222324252627282930313233343536 |
- import React, { useState, useEffect } from 'react';
- import Notice from '../notice';
- import { NoticeInstance } from '@douyinfe/semi-foundation/notification/notificationFoundation';
- export interface HookNoticeProps extends NoticeInstance{
- afterClose: (id: string) => void;
- }
- const HookNotice = ({ afterClose, ...config }: HookNoticeProps, ref: React.Ref<any>) => {
- const [visible, setVisible] = useState(true);
- const close = () => {
- setVisible(false);
- };
- React.useImperativeHandle(ref, () => ({
- close: () => {
- setVisible(false);
- }
- }));
- useEffect(() => {
- if (!visible) {
- afterClose(String(config.id));
- }
- }, [visible]);
- return visible ? (
- <Notice
- {...config}
- onHookClose={close}
- />
- ) : null;
- };
- export default React.forwardRef(HookNotice);
|