修复 antd 弃用警告
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
import { useEffect } from 'react';
|
||||
import { App as AntdApp } from 'antd';
|
||||
import { setAntdMessageApi } from './antdMessage';
|
||||
|
||||
export default function AntdMessageBridge() {
|
||||
const { message } = AntdApp.useApp();
|
||||
|
||||
useEffect(() => {
|
||||
setAntdMessageApi(message);
|
||||
return () => {
|
||||
setAntdMessageApi(null);
|
||||
};
|
||||
}, [message]);
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import type { Key } from 'react';
|
||||
import type {
|
||||
ArgsProps,
|
||||
JointContent,
|
||||
MessageInstance,
|
||||
MessageType,
|
||||
TypeOpen,
|
||||
} from 'antd/es/message/interface';
|
||||
|
||||
let messageApi: MessageInstance | null = null;
|
||||
|
||||
const noopMessage = Object.assign(() => undefined, {
|
||||
then: (
|
||||
onfulfilled?: ((value: boolean) => unknown) | null,
|
||||
onrejected?: ((reason: unknown) => unknown) | null,
|
||||
) => Promise.resolve(true).then(onfulfilled ?? undefined, onrejected ?? undefined),
|
||||
}) as MessageType;
|
||||
|
||||
function createTypeOpen(type: 'info' | 'success' | 'error' | 'warning' | 'loading'): TypeOpen {
|
||||
return (content: JointContent, duration?: number | VoidFunction, onClose?: VoidFunction) => {
|
||||
if (!messageApi) return noopMessage;
|
||||
return messageApi[type](content, duration, onClose);
|
||||
};
|
||||
}
|
||||
|
||||
export function setAntdMessageApi(api: MessageInstance | null) {
|
||||
messageApi = api;
|
||||
}
|
||||
|
||||
export const message = {
|
||||
info: createTypeOpen('info'),
|
||||
success: createTypeOpen('success'),
|
||||
error: createTypeOpen('error'),
|
||||
warning: createTypeOpen('warning'),
|
||||
loading: createTypeOpen('loading'),
|
||||
open: (args: ArgsProps) => messageApi?.open(args) ?? noopMessage,
|
||||
destroy: (key?: Key) => messageApi?.destroy(key),
|
||||
} satisfies MessageInstance;
|
||||
Reference in New Issue
Block a user