如何解决react-admin-import-csv自定义成功通知被默认通知覆盖问题
解决方案:禁用组件默认通知来自定义成功提示
react-admin-import-csv组件在导入完成后会自动触发默认通知,这就是你的自定义成功通知被立即覆盖的原因。最规范的解决方式是禁用组件的默认通知逻辑,完全接管成功/失败的提示流程:
实现步骤
- 给
ImportButton添加disableNotify={true}属性,关闭组件自带的通知 - 在自定义的
onFinish回调中,自行处理成功/失败的提示和逻辑
完整代码示例
import { useNotify } from 'react-admin'; import { ImportButton } from 'react-admin-import-csv'; const CustomImportButton = () => { const notify = useNotify(); const handleImportFinish = (results) => { const { successCount, errorCount, errors, resultMessage } = results; if (errorCount > 0) { // 错误场景:保留你原有的逻辑 notify(`importError`, { type: 'error', messageArgs: { error: resultMessage }, multiLine: true }); throw new Error(errors); } else { // 成功场景:自定义通知,不会被默认通知覆盖 notify(`importSuccess`, { type: 'success', messageArgs: { success: `成功导入${successCount}条数据` }, multiLine: true, autoHideDuration: 3000 }); // 正常返回,无需抛出错误 return; } }; return ( <ImportButton disableNotify={true} // 核心配置:禁用组件默认通知 importOptions={{ onFinish: handleImportFinish, // 你的其他导入配置... }} /> ); }; export default CustomImportButton;
原理说明
disableNotify={true}会阻止组件在导入完成后自动调用react-admin的notify方法,避免和你的自定义通知冲突- 自定义
onFinish回调完全控制了导入结果的处理逻辑,成功时正常返回不会触发控制台报错,同时你的自定义通知可以正常显示
内容的提问来源于stack exchange,提问作者restricteur
相关产品推荐
相关产品推荐

