1
resposta

Uncaught TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator)) at useFavoritoContext (Favoritos.js:18:1) at Card (index.js:7:1)

está aparecendo esse erro no console e minha tela está ficando completamente branca, esta dando erro nessas partes:

    const [favorito, setFavorito] = useContext(FavoritosContext);
    const [favorito, adicionarFavorito] = useFavoritoContext();

curso: React: praticando React com Js, modulo 3 aula 7

1 resposta

Oi Fernando, tudo bem?

O erro "Uncaught TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator)) at useFavoritoContext (Favoritos.js:18:1) at Card (index.js:7:1)" que está aparecendo no console indica que a variável que você está tentando iterar (ou seja, acessar seus elementos em um loop) é undefined, ou seja, não foi definida ou não possui valor.

Verificando os trechos de código que você forneceu, notei que você está tentando utilizar o useContext e o useFavoritoContext para acessar o contexto de favoritos. No entanto, é possível que o contexto não tenha sido definido corretamente ou não esteja sendo passado corretamente para os componentes que precisam dele.

Para resolver esse erro, sugiro que você verifique se o contexto está sendo definido corretamente e se está sendo passado para os componentes filhos que o utilizam. Uma forma de fazer isso é verificar se o valor passado como parâmetro para o createContext está sendo passado corretamente. Por exemplo:

export const FavoritosContext = createContext();

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

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

Nesse exemplo, o createContext está sendo utilizado para criar o contexto de favoritos e o FavoritosProvider está sendo utilizado para fornecer o contexto para os componentes filhos. Note que o valor fornecido para o Provider é um array contendo a variável favorito e a função setFavorito.

Além disso, é importante verificar se o contexto está sendo utilizado corretamente nos componentes filhos. Por exemplo:

import { useContext } from "react";
import { FavoritosContext } from "./FavoritosContext";

const Favoritos = () => {
  const [favorito, setFavorito] = useContext(FavoritosContext);

  return (
    <div>
      {favorito.map((item) => (
        <p key={item}>{item}</p>
      ))}
    </div>
  );
};

export default Favoritos;

Nesse exemplo, o useContext está sendo utilizado para acessar o contexto de favoritos e a variável favorito está sendo iterada utilizando o método map. Note que a variável favorito é desestruturada do array fornecido pelo contexto.

Por fim, verifique se os componentes que estão tentando utilizar o contexto de favoritos estão sendo renderizados dentro do Provider do contexto. Caso contrário, eles não terão acesso ao contexto e o erro mencionado poderá ocorrer.

Espero que essa explicação tenha sido útil para você resolver o erro.

Um abraço e bons estudos.