Neste artigo você aprenderá a como resolver o erro useHistory is not exported from react-router-dom, que acontece em aplicações de React JS

erro useHistory is not exported from react-router-dom capa

Fala programador(a), beleza? Bora aprender mais sobre React JS!

Se você já se aventurou no mundo do desenvolvimento com React, é provável que tenha utilizado a biblioteca react-router-dom para gerenciar as rotas de sua aplicação.

Por vezes, ao tentar usar o hook useHistory, você pode ter se deparado com um erro afirmando que “useHistory is not exported from react-router-dom”.

Neste artigo, abordaremos a causa desse erro e como resolvê-lo da forma mais otimizada e moderna.

Entendendo o Erro

Para compreender a solução, primeiro precisamos entender a origem do problema.

O que é o useHistory?

No React Router v5, o hook useHistory era amplamente utilizado para acessar o objeto history, permitindo que os desenvolvedores manipulassem o histórico do navegador.

import { useHistory } from 'react-router-dom';

function MeuComponente() {
  const history = useHistory();

  const redirecionarParaInicio = () => {
    history.push("/");
  };

  return <button onClick={redirecionarParaInicio}>Ir para início</button>;
}

A Mudança no React Router v6

A versão 6 do React Router trouxe várias mudanças significativas, uma das quais foi a remoção do hook useHistory.

Em vez disso, os desenvolvedores são agora encorajados a usar o hook useNavigate.

Solucionando o Problema

Agora que sabemos que o hook useHistory não está mais disponível no React Router v6, podemos trabalhar na correção do erro.

Migrando para useNavigate

O useNavigate serve ao mesmo propósito que o useHistory servia anteriormente, mas com uma API ligeiramente diferente.

Vamos ver como podemos ajustar nosso código para utilizar o useNavigate.

import { useNavigate } from 'react-router-dom';

function MeuComponente() {
  const navegar = useNavigate();

  const redirecionarParaInicio = () => {
    navegar("/");
  };

  return <button onClick={redirecionarParaInicio}>Ir para início</button>;
}

Como você pode ver, a principal diferença está na forma de invocar a navegação. Anteriormente, utilizávamos history.push, mas agora simplesmente chamamos a função navegar diretamente.

Considerando um Downgrade

Se por algum motivo, seja por dependência de outros pacotes ou preferência pessoal, você quiser continuar usando a versão 5 do React Router, você pode considerar fazer um downgrade.

No entanto, é importante observar que isso não é a solução mais otimizada ou moderna, pois estará perdendo as melhorias e correções de bugs da versão mais recente.

npm install react-router-dom@5

Ao fazer isso, você poderá continuar usando o useHistory como antes.

Outras Considerações ao Atualizar

Ao migrar para o React Router v6, não apenas o useHistory foi afetado. Outros aspectos, como a estrutura do Route, também mudaram.

Certifique-se de revisar a documentação e as notas de atualização para garantir uma transição suave.

Quer aprender mais sobre programação? Conheça nosso canal no YouTube:

Conclusão

Chegamos ao fim do artigo sobre o erro useHistory is not exported from react-router-dom!

A evolução das bibliotecas é algo natural no mundo do desenvolvimento, e com o React Router não foi diferente.

A mudança do useHistory para o useNavigate no React Router v6 pode inicialmente causar alguns contratempos, mas a transição é direta e traz consigo melhorias na API.

Ao manter-se atualizado e adaptando-se às novas práticas, você garante que sua aplicação esteja sempre utilizando o que há de mais recente e otimizado no ecossistema React.

Está buscando em evoluir como Programador? Confira o nossos cursos de programação.

Subscribe
Notify of
guest

0 Comentários
Inline Feedbacks
View all comments