miliko0022
@miliko0022
Краткие личные сведения, включая интересующую вас

Переадресация с помощью history.push не работает?

я написал вот такой код

import React, { FC, Fragment, useEffect } from "react";
import { createBrowserHistory } from "history";
const history = createBrowserHistory();

const HandlerErr: FC<{ error: string }> = ({ error }) => {
  useEffect(()=>{
   const time = setTimeout(() =>  {history.push(`/`)}, 2000);
   return(()=> clearTimeout(time));
  },[error])
  return (
    <Fragment>
      <div>{error}</div>
      <div>{"Contact site administrator"}</div>
    </Fragment>
  );
};

Я использую HandlerErrкомпонент для перенаправления. но по какой-то причине это не работает history.push (/ ).vido
  • Вопрос задан
  • 506 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Если вы используете react-router-dom, то надо использовать именно тот экземпляр history, который использует ваш роутер.
import React, { FC, useEffect } from 'react';
import { RouteComponentProps, withRouter } from 'react-router-dom';

interface OwnProps {
  error: string;
}

type Props = OwnProps & RouteComponentProps<any>;

const HandlerErr: FC<Props> = ({ error, history }) => {
  useEffect(() => {
   const timeout = setTimeout(() => {
     history.push(`/`);
   }, 2000);
 
   return () => { 
     clearTimeout(timeout);
   };
  }, [error]);

  return (
    <>
      <div>{error}</div>
      <div>Contact site administrator</div>
    </>
  );
};

export default withRouter(HandlerErr);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы