[英]Redux - Unable to use dispatch to call action inside of axios response
[英]redux dispatch not work when use in axios interceptors
我想在 axios 返回错误时显示小吃店。 我将 redux 用于配置小吃店。
axiosAgent.interceptors.response.use(
function(response) {
return response;
},
function(error) {
console.log('object')
const dispatch = useDispatch();
dispatch({
type: ActionsTypes.CHANGE_SNACKBAR_CONFIG,
payload: { variant: "error", message: Strings.errors.problem }
});
dispatch({ type: ActionsTypes.CHANGE_SNACKBAR_SHOW, payload: true });
return Promise.reject(error);
}
);
这是我的小吃店组件:
export default function Snackbar() {
const open = useSelector(state => state.Snackbar.showSnackbar);
const config = useSelector(state => state.Snackbar.snackbarConfig);
const dispatch = useDispatch();
const handleClose = (event, reason) => {
if (reason === "clickaway") {
return;
}
dispatch({ type: ActionsTypes.CHANGE_SNACKBAR_SHOW, payload: false });
};
useEffect(() => {
console.log(config);
}, [config]);
return (
<SB open={open} autoHideDuration={6000} onClose={handleClose}>
<Alert onClose={handleClose} severity={config.variant}>
{config.message}
</Alert>
</SB>
);
}
但不起作用。 当我从组件发送它时,它可以工作,但在这里不起作用。
钩子,例如useDispatch()
,只能用在函数组件的主体中。 您不能在拦截器中使用useDispatch
。 如果你需要在拦截器中调度一个动作,你需要有一个对store
对象的引用,并调用store.dispatch(/* action */)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.