при использовании в перехватчиках ax ios диспетчерская отправка не работает - PullRequest
0 голосов
/ 11 марта 2020

Я хочу показывать закусочную, когда топор ios ошибка возврата. Я использую приставку для конфигурации закусочной.

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>
  );
}

, но не работает. Когда я отправляю его из компонента, он работает, но здесь не работает.

1 Ответ

1 голос
/ 11 марта 2020

Крючки, такие как useDispatch(), могут использоваться только в теле функционального компонента. Вы не можете использовать useDispatch в перехватчике. Если вам нужно отправить действие в перехватчике, вам понадобится ссылка на объект store и вызов store.dispatch(/* action */)

...