Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao entrar no post de postsRecomendados

quando aperto em um dos posts ali na parte de posts que você pode gostar, "posts recomendados" ele adicionar um caminho encima do que já tem,

e fica assim: http://localhost:3000/posts/3/posts/8

E não abre o post, da erro, aparece a página não encontrada, o que pode ser?

O código do componente Post esta assim:

import './Post.css'
import styles from './Post.module.css'

import { Route, Routes, useParams } from "react-router-dom"
import posts from 'json/posts.json';
import PostModelo from "componentes/PostModelo";
import { ReactMarkdown } from "react-markdown/lib/react-markdown";
import NaoEncontrada from 'paginas/NaoEncontrada';
import PaginaPadrao from 'componentes/PaginaPadrao';
import PostCard from 'componentes/PostCard';

export default function Post() {
    const parametros = useParams();

    const post = posts.find(post => {
        return post.id === Number(parametros.id)
    })

    if (!post) {
        return <NaoEncontrada />
    }

    const postsRecomendados = posts
        .filter((post) => post.id !== Number(parametros.id))
        .sort((a, b) => b.id - a.id)
        .slice(0, 4);


    return (
        <Routes>
            <Route path="*" element={<PaginaPadrao />}>
                <Route index element={
                    <PostModelo
                        fotoCapa={`/assets/posts/${post.id}/capa.png`}
                        titulo={post.titulo}
                    >
                        <div className="post-markdown-container">
                            <ReactMarkdown>
                                {post.texto}
                            </ReactMarkdown>
                        </div>

                        <h2 className={styles.tituloOutrosPosts}>
                            Outros posts que você pode gostar:
                        </h2>

                        <ul className={styles.postsRecomendados}>
                            {postsRecomendados.map((post) => (
                                <li key={post.id}>
                                    <PostCard post={post}/>
                                </li>
                            ))}
                        </ul>

                    </PostModelo>
                } />
            </Route>

        </Routes>
    )
}
1 resposta
solução!

Oi, Sergio, tudo bem? Desculpe a demora a responder.

O código que você deve conferir na verdade é o do componente PostCard, pois ele que define o formato da URL do post que vamos acessar.

No caso, o comportamento de adicionar o link ao final da URL está acontecendo com você porque o código do seu componente PostCard deve estar assim:

        <Link to={`posts/${post.id}`}>
            {/* Código omitido... */}
        </Link>

Note que a string da propriedade to não inicia com uma barra /. Seja em uma tag a do HTML ou no componente Link do React, quando indicamos um endereço que não começa com a barra, ele é entendido como relativo ao endereço atual, ou seja, ele vai adicionar posts/numeroDoPost ao final da URL.

Para corrigir, basta colocar a barra no início da string:

        <Link to={`/posts/${post.id}`}>
            {/* Código omitido... */}
        </Link>

Espero ter ajudado! Abraços e bons estudos :)