Olá, Charlles.
Tudo bem?
Eu analisei e peguei o projeto final do GitHub, eu entrei em qualquer aula no repositório e mudei a branch para a última aula. O instrutor só mexe no Front. Vou deixar os arquivos que ele altera, para você comparar:
- "Favoritos.js" da pasta "rotas":
import styled from 'styled-components'
import { useEffect, useState } from 'react'
import livroImg from '../imagens/livro.png'
import { deleteFavorito, getFavoritos } from '../servico/favoritos'
const FavoritosContainer = styled.div`
width: 100vw;
height: 100vh;
background-image: linear-gradient(90deg,#002F52 35%,#326589 165%);
`
const Titulo = styled.h2`
color: #FFF;
font-size: 36px;
text-align: center;
width: 100%;
padding-top: 35px
`
const Resultado = styled.div`
display: flex;
justify-content: center;
align-items: center;
margin: 20px 0;
cursor: pointer;
text-align: center;
padding: 0 100px;
p {
width: 200px;
color: #FFF;
}
img {
width: 100px;
}
&:hover {
border: 1px solid white;
}
`
const ResultadoContainer = styled.div`
display: flex;
flex-wrap: wrap;
justify-content: center;
`
function Favoritos() {
const [ favoritos, setFavoritos ] = useState([])
const fetchFavoritos = async() => {
const livrosFavoritos = await getFavoritos()
setFavoritos(livrosFavoritos)
}
async function deletarFavorito(id) {
await deleteFavorito(id)
await fetchFavoritos()
alert(`livro de id:${id} removido dos favoritos`)
}
useEffect(() => {
fetchFavoritos()
}, [])
return (
<FavoritosContainer>
<Titulo>Aqui estão seus livros favoritos:</Titulo>
<ResultadoContainer>
{ favoritos.length ?
favoritos.map( favorito => (
<Resultado onClick={() => deletarFavorito(favorito.id)}>
<img alt='teste' src={livroImg}/>
<p>{favorito.nome}</p>
</Resultado> )) : null
}
</ResultadoContainer>
</FavoritosContainer>
);
}
export default Favoritos
- "favorito.js" da pasta "servico":
import axios from "axios";
const FavoritosAPI = axios.create({
baseURL: 'http://localhost:8000/favoritos'
})
async function getFavoritos() {
const response = await FavoritosAPI.get('/')
return response.data
}
async function postFavorito(id) {
const response = await FavoritosAPI.post(`/${id}`)
return response.data
}
async function deleteFavorito(id) {
const response = await FavoritosAPI.delete(`/${id}`)
return response.data
}
export {
getFavoritos,
postFavorito,
deleteFavorito
}
- "index.js" da pasta "Pesquisa" em "components", como não cabe aqui, vou deixar em outra resposata logo abaixo: