You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React axios拦截器中定义的displaySucces函数未触发怎么解决?

问题原因分析
  • 代码存在基础语法错误:两个action导入语句末尾都缺失闭合的单引号,会导致模块导入失败,displaySucces 可能实际为undefined,调用自然无效果。另外要注意拼写问题,succes 是常见拼写错误(正确拼写为success),如果你的action文件里导出的是正确拼写的displaySuccess,也会导致导入的变量为undefined。
  • 核心逻辑错误:Redux的action creator被直接调用,没有通过dispatch触发。你直接调用displaySucces(response.status) 只会返回一个action对象,并没有提交给Redux reducer处理,自然不会触发状态更新和toast展示。
  • 额外排查点:可以先在成功回调里加console.log(response) 确认响应成功时该回调是否正常执行,排除其他拦截器提前返回、请求本身走了错误回调的情况。
修复方案
  1. 修复导入语法和拼写问题,同时引入项目根store实例:
import AuthentificationService from "./AuthentificationService";
// 补全闭合引号,同时检查拼写是否匹配action文件的导出
import { displayError } from '../store/actions/errorActions'
// 注意确认success拼写是否和导出一致,这里如果原导出是succes就保留,否则修正为displaySuccess
import { displaySucces } from '../store/actions/succesActions'
// 引入你的项目根store实例,路径根据你项目实际存储位置调整
import store from '../store'
  1. 调用action时必须通过store的dispatch方法提交:
api.interceptors.response.use(function (response) {
  // 通过dispatch提交action
  store.dispatch(displaySucces(response.status))
  return Promise.resolve(response)
}, function (error) {
  // 错误提示同理也要用dispatch提交
  store.dispatch(displayError(error.response.status))
  return Promise.reject(error)
})
  1. 可选校验:如果你的displaySucces 逻辑里有状态码过滤规则,比如只对200状态码展示提示,可以先在回调里打印状态码确认匹配逻辑,避免被规则过滤导致无提示。

内容的提问来源于stack exchange,提问作者songa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:36:03