利用代理劫持网络,统一处理网络错误时,错误内容显示为空问题:
import antMessage from '@custom-design/atoms/es/message';
const message = new Proxy(antMessage, {
get(target, property, receiver) {
if (property !== 'error') {
// 其他方法则直接返回原始对象的方法
return Reflect.get(target, property, receiver);
}
return function (this: any, content: string, arg0: any, arg1: any) {
const originalError = Reflect.get(target, property, receiver);
if (content) {
if (content.startsWith('useRequest')) {
// 直接忽略
return Promise.resolve(); // 兼容 message.error().then()
}
const [duration, onClose] = (() => {
// message.error('', ()=>{});
if (typeof arg0 === 'function') {
return [3, arg0];
}
// 其他情况
return [arg0 ?? 3, arg1];
})();
return originalError.apply(this, [
{
// className: 'vv-target',
content: content === 'Network Error' ? '网络异常' : content,
duration,
onClose
}
]);
}
originalError.call(this, content, arg0, arg1);
};
}
});
export default message;