【发布时间】:2020-06-23 21:37:27
【问题描述】:
我想在 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必须在 React 组件的上下文中调用。
标签: javascript reactjs redux react-redux axios