1
resposta

[Sugestão] NãoEncontrado de um jeito mais simples

Ao invés de fazer toda essa volta pra exibir a página de Não Encontrado (404 Not Found), dá pra simplesmente usar o useNavigate com useEffect:

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

const navigate = useNavigate()

useEffect(()=>{
    if(!post){
        navigate('/PageNotFound') //"/PageNotFound" não é uma rota conhecida, então cai na página de Erro 404                                                  
    }
})

Dá pra trocar o código do useEffect por um em JavaScript puro com exatamente o mesmo efeito:

if(!post){
         window.location.pathname = `${window.location.pathname}/PageNotFound` //Isso faz a aplicação exibir a rota do Erro 404 sem recarregar página                                                
         return null
     }

É possível também usar o Navigate ao invés do useNavigate. Isso elimina a necessidade do useEffect, mas só é recomendado para Class Components:

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

if(!post){
    Navigate({to:'/PageNotFound'})
}
1 resposta

Oi Daniel, tudo bem?

Muitoobrigada por compartilhar sua sugestão de como simplificar a exibição da página de Não Encontrado em React Router com JavaScript. Realmente, é possível utilizar o useNavigate com useEffect para redirecionar para a página de Erro 404 caso o post não exista.

Além disso, você também mostrou uma alternativa em JavaScript puro, que faz a aplicação exibir a rota do Erro 404 sem recarregar a página. É uma solução interessante. Parabéns por praticar! E sempre procurar outras opções, é uma ótima maneira de praticar.

Muito obrigada, mais uma vez, por compartilhar suas ideias conosco! Espero ter ajudado e bons estudos!

Um abraço e bons estudos.