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

[Bug] Problemas com import e export

Boa tarde

Eu tenho o seguinte erro abaixo refente aos arquivos index do Card e Favoritos do contexto

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

CÓDIGO DO ARQUIVO index DA PASTA CARD

import styles from "./Card.module.css";
import iconeFavoritar from "./favoritar.png";
import { useFavoritoContext } from "../contextos/Favoritos.js";
import iconeDesfavoritar from "./desfavoritar.png";
import { Link } from "react-router-dom"

function Card({ id, titulo, capa }) {
    const {favorito, adicionarFavorito } = useFavoritoContext();
    const ehFavorito = favorito.some((fav) => fav.id === id);
    const icone = !ehFavorito ? iconeFavoritar : iconeDesfavoritar;
    return (
        <div className={styles.container}>
            <Link className={styles.link} to={`/${id}`}>
                <img src={capa} alt={titulo} className={styles.capa}/>
                <h2>{titulo}</h2>
            </Link>
            <img src={icone}
                alt="Favoritar filme"
                className={styles.favoritar}
                onClick={() => {
                    adicionarFavorito({ id, titulo, capa })
                }}/>
        </div>
    )
}

export default Card

CÓDIGO DO ARQUIVO favorito DA PASTA CONTEXTO

import { createContext, useContext, useState } from "react"

export const FavoritosContext = createContext();
FavoritosContext.displayName = "Favoritos"

export default function FavoritosProvider({ children }) {
    const [favorito, setFavorito] = useState([]);

    return (
        <FavoritosContext.Provider value={{favorito, setFavorito}}>
            {children}
        </FavoritosContext.Provider>
    )
}

export function useFavoritosContext() {
    const { favorito, setFavorito } = useContext(FavoritosContext);

    function adicionarFavorito(novoFavorito){
        const favoritoRepetido = favorito.some(item => item.id === novoFavorito.id)

        let novaLista = [...favorito];

        if(!favoritoRepetido){
            novaLista.push(novoFavorito);
            return setFavorito(novaLista);
        }

        novaLista.splice(novaLista.indexOf(novoFavorito), 1);
        return setFavorito(novaLista);
    }

    return {
        favorito, 
        adicionarFavorito
    }
}

Ja tentei mudar as importações conforme informado pelo react mas nao consegui consertar.

1 resposta
solução!

Oi Alan, tudo bem?

Levando em conta os códigos que você compartilhou, o problema que encontrei tá na importação da função useFavoritoContext no arquivo index.js da pasta Card. No código do arquivo favorito.js da pasta contexto, a função que você está exportando se chama useFavoritosContext (com um 's' no final de Favoritos), mas no arquivo index.js da pasta Card, você está tentando importar useFavoritoContext (sem o 's').

Pra corrigir o erro, você precisa corrigir isso. Então, no arquivo index.js da pasta Card, substitua:

import { useFavoritoContext } from "../contextos/Favoritos.js";

por:

import { useFavoritosContext } from "../contextos/Favoritos.js";

Veja se a função useFavoritosContext tá sendo importada corretamente em todos os lugares que você a utiliza, usando o nome correto com o 's' no final.

Espero ter ajudado.

Um abraço e bons estudos.