Les comparto mi código, ya que considero que si estoy utilizando correctamente la función navigate pero aun así el sitio se recarga
import { useState, useEffect } from "react";
import "../assets/css/componentes/card.css";
import { useParams, useNavigate } from 'react-router-dom';
import { search } from '../api/api';
const Post = () => {
const [post, setPost] = useState({});
const { id } = useParams();
const navigate = useNavigate();
useEffect(() => {
search(`/posts/${id}`, setPost).catch( () => {
navigate("/not-found", { replace: true });
});
}, [id]);
return (
<main className="container flex flex--center">
<article className="card post">
<h2 className="post-card__title">{post.title}</h2>
<p className="text__card">{post.body}</p>
</article>
</main>
)
}
export default Post;
Y aqui donde utilizo el Link:To
import { useState, useEffect } from "react";
import "../assets/css/componentes/card.css";
import { search } from "../api/api";
import { Link } from "react-router-dom";
const ListPosts = ({url}) => {
const [posts, setPosts] = useState([]);
useEffect(() => {
search(url, setPosts);
}, [url]);
return (
<section className="posts container">
{
posts.map( post => {
const {id, title, metadescription, categoria} = post;
return <Link to={`/posts/${id}`} className={`post__card post-card--${categoria}`} key={id}>
<article>
<h3 className="post-card__title">
{title}
</h3>
<p className="post-card__meta">{metadescription}</p>
</article>
</Link>
})
}
</section>
)
};
export default ListPosts;
El detalle es que incluso al instructor Harland se le esta recargando la pagina cuando pone un post que no existe :(
Por ejemplo, en el minuto 2:28 se puede ver como al utilizar el id 90 la pagina se redirige al notFound pero antes de hacerlo se recarga brevemente.