修复 antd 弃用警告

This commit is contained in:
yml2213
2026-07-24 12:48:02 +08:00
parent a13dde57dd
commit 6840728da6
17 changed files with 225 additions and 138 deletions
@@ -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;
}
+38
View File
@@ -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;