1
resposta

Erro na exportação

React Hook "useContext" is called in function "productUserContext" that is neither a React function component nor a custom React Hook function. React component names must start with an uppercase letter. React Hook names must start with the word "use" react-hooks/rules-of-hooks

Me ocorre esse erro ao tentar exportar a função para uso do useContext, ja coloquei a primeira letra como maiuscula, o erro deixa de existir, porém, o codigo nao funciona mais, ele nn tras o products e SetProducts Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oi Matheus, tudo bem?

Desculpe a demora em retornar.

Primeiramente, é importante entender que o erro que você está enfrentando está relacionado ao uso incorreto do hook useContext em uma função que não é um componente React válido. O React exige que os nomes dos componentes comecem com letras maiúsculas e que os hooks usem o prefixo "use".

Você mencionou que ao corrigir o nome do componente para iniciar com uma letra maiúscula, o erro desapareceu, mas o código não funcionou corretamente. Isso pode estar ocorrendo porque a correção do nome do componente não é a única correção necessária.

Para usar o useContext, é necessário definir um Contexto (context) e passá-lo para os componentes que precisam acessá-lo. O Contexto é uma forma de compartilhar dados entre os componentes, sem precisar passá-los manualmente de pai para filho.

Um exemplo de definição de Contexto e uso do useContext pode ser visto abaixo:

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

const ProductContext = createContext();

function App() {
  const [products, setProducts] = useState([]);

  return (
    <ProductContext.Provider value={{ products, setProducts }}>
      <ProductList />
    </ProductContext.Provider>
  );
}

function ProductList() {
  const { products, setProducts } = useContext(ProductContext);

  function addProduct() {
    setProducts([...products, { name: "New Product" }]);
  }

  return (
    <>
      <button onClick={addProduct}>Add Product</button>
      <ul>
        {products.map((product, index) => (
          <li key={index}>{product.name}</li>
        ))}
      </ul>
    </>
  );
}

Observe que o contexto é definido usando o createContext e é passado para os componentes por meio do Provider. No exemplo acima, o ProductContext é definido no componente App e é passado para o componente ProductList por meio do Provider. Dentro do componente ProductList, o useContext é usado para acessar os dados definidos no contexto.

Além disso, é importante mencionar que o hook useContext só pode ser usado dentro de um componente React válido. Um componente React é uma função que retorna JSX (ou null) e pode receber propriedades (props) como parâmetro. O exemplo acima mostra um exemplo de componente válido (ProductList).

Portanto, verifique se sua função productUserContext é uma função React válida e se o Contexto está sendo definido e usado corretamente. Certifique-se de que o contexto esteja sendo passado corretamente para o componente que precisa acessá-lo e que o useContext esteja sendo usado dentro de um componente React válido.

Espero que tenha te ajudado.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software