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