本指南说明如何将项目中的原生 alert() 和 confirm() 替换为新的通知系统。
import { useToast } from '../contexts/NotificationContext';
import { useConfirm } from '../contexts/NotificationContext';
const MyComponent = () => {
const { showToast } = useToast();
const { showConfirm } = useConfirm();
// ... 组件逻辑
};
// ❌ 旧代码
alert('操作成功');
// ✅ 新代码
showToast('操作成功', 'success');
// ❌ 旧代码
alert('操作失败,请重试');
// ✅ 新代码
showToast('操作失败,请重试', 'error');
// ❌ 旧代码
alert(`音色创建成功!\n\n音色ID: ${voiceId}\n状态: 可用`);
// ✅ 新代码
showToast(`音色创建成功!音色ID: ${voiceId},状态: 可用`, 'success');
// ❌ 旧代码
if (!confirm('确定要删除这条记录吗?')) return;
// 执行删除
// ✅ 新代码
const confirmed = await showConfirm({
message: '确定要删除这条记录吗?'
});
if (!confirmed) return;
// 执行删除
// ❌ 旧代码
if (!confirm('确定要删除这条记录吗?')) return;
// ✅ 新代码
const confirmed = await showConfirm({
title: '确认删除',
message: '确定要删除这条记录吗?',
confirmText: '删除',
cancelText: '取消',
danger: true
});
if (!confirmed) return;
// ❌ 旧代码
if (!confirm('确定要保存更改吗?')) return;
// ✅ 新代码
const confirmed = await showConfirm({
title: '保存更改',
message: '确定要保存当前的更改吗?',
confirmText: '保存',
cancelText: '取消'
});
if (!confirmed) return;
// ❌ 旧代码
if (!confirm(`确定要删除选中的 ${count} 个文档吗?`)) return;
// ✅ 新代码
const confirmed = await showConfirm({
title: '批量删除',
message: `确定要删除选中的 ${count} 个文档吗?\n\n此操作不可恢复,请谨慎操作。`,
confirmText: '确定删除',
cancelText: '取消',
danger: true
});
if (!confirmed) return;
frontend/components/audio/CloningPanel.tsx - 声音克隆frontend/components/audio/SynthesisPanel.tsx - 语音合成frontend/components/audio/LongTextPanel.tsx - 长文本转语音frontend/pages/MultimodalTranslation.tsx - 多模态翻译frontend/pages/ImageTranslation.tsx - 图片翻译frontend/pages/DataMining.tsx - 数据挖掘frontend/pages/InvoiceManagement.tsx - 发票管理frontend/pages/InvoiceApply.tsx - 发票申请frontend/pages/Billing.tsx - 账单frontend/pages/DeepResearch.tsx - 深度研究frontend/pages/ResearchHistory.tsx - 研究历史frontend/components/ocr/ImageUploadZone.tsx - 图片上传frontend/components/HistoryTable.examples.tsx - 示例代码showConfirm 返回 Promise,需要使用 await 或 .then()showConfirm 的函数需要声明为 async替换完成后,请测试以下场景: