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