Estou tentando usar ganchos de reação para um problema simples
const [personState,setPersonState] = useState({ DefinedObject });
com as seguintes dependências.
"dependencies": {
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-scripts": "3.0.0"
}
mas ainda estou recebendo o seguinte erro:
./src/App.js
Linha 7:
Gancho de reação "useState" é chamado na função "app", que não é um componente da função React ou uma função personalizada do React Hook, ganchos de reação / regras de ganchosLinha 39:
'state' não está definido
no undefPesquise as palavras-chave para saber mais sobre cada erro.
O código do componente está abaixo:
import React, {useState} from 'react';
import './App.css';
import Person from './Person/Person';
const app = props => {
const [personState, setPersonSate] = useState({ person:[ {name:'bishnu',age:'32'}, {name:'rasmi',age:'27'}, {name:'fretbox',age:'4'} ], });
return (
<div className="App">
<h2>This is react</h2>
<Person name={personState.person[1].name} age="27"></Person>
<Person name={personState.person[2].name} age="4"></Person>
</div> );
};
export default app;
Componente pessoa
import React from 'react';
const person = props => {
return(
<div>
<h3>i am {props.name}</h3>
<p>i am {props.age} years old</p>
<p>{props.children}</p>
</div>
)
};
export default person;
reactjs
react-hooks
Bishnu
fonte
fonte
Respostas:
Tente capitalizar 'app' como
No React, os componentes precisam ser capitalizados e os ganchos personalizados precisam começar
use
.fonte
Checks if the node is a React component name. React component names must always start with a non-lowercase letter.
.Sinto que estamos fazendo o mesmo curso na Udemy.
Nesse caso, apenas capitalize o
const app
Para
const App
Faça tão bem quanto para
Para
Funciona bem para mim.
fonte
Tanto quanto sei, um linter está incluído neste pacote. E isso requer que você componend comece com caracteres maiúsculos. Por favor verifique isto.
No entanto, quanto a mim, é triste.
fonte
Use maiúsculas na primeira letra no nome da função.
fonte
Use const app em vez de const app
fonte
Apenas tente capitalizar o nome do seu aplicativo
fonte
Você está recebendo este erro: "React Hook" useState "é chamado na função" App ", que não é um componente da função React ou uma função personalizada do React Hook"
Solução: Basicamente, você precisa capitalizar a função.
Por exemplo:
fonte
o primeiro caractere da sua função deve estar em maiúsculas
fonte
Eu tive o mesmo problema. Acontece que Capitalizar o "A" em "App" foi o problema. Além disso, se você exportar:
export default App;
certifique-se de exportar o mesmo nome "App" também.fonte
Os componentes devem começar com letras maiúsculas. Lembre-se também de alterar a primeira letra da linha para exportar!
fonte
Você tem a importação certa?
fonte
Os nomes dos componentes de reação devem ser capitalizados e as funções de ganchos personalizados devem começar com a palavra-chave use para identificar como uma função de gancho de reação.
Capitalize os componentes do seu aplicativo para App
fonte
Eu tive o mesmo problema, mas não com o aplicativo. Eu tinha uma classe personalizada, mas usei uma letra minúscula para iniciar o nome da função e também recebi o erro.
A primeira letra do nome da função e a linha de exportação foram alteradas para o CamelCase e o erro desapareceu.
no meu caso, o resultado final foi algo como:
isso resolveu meu problema.
fonte
A solução é simples, correta "app" e escreva "App" com o primeiro caractere em maiúsculas.
fonte
Capitalizar o aplicativo para o App certamente funcionará.
fonte
No JSX, o nome da marca em minúsculas é considerado como componente nativo html. Para reagir, reconheça a função como componente React, precisa colocar o nome em maiúscula.
https://reactjs.org/docs/jsx-in-depth.html#html-tags-vs.-react-components
fonte
Substitua este
com isso
fonte
Torne o nome da função maiúsculo. Isso funciona para mim.
fonte
Para o erro a seguir, coloque em maiúscula a primeira letra do componente como e também a exportação também.
fonte
A solução, como Yuki já apontou, é capitalizar o nome do componente. É importante observar que não apenas o componente "padrão" do aplicativo precisa ser capitalizado, mas todos os componentes:
Isso ocorre devido ao pacote eslint-plugin-react-hooks, especificamente à função isComponentName () dentro do script RulesOfHooks.js.
Explicação oficial das Perguntas frequentes dos Hooks :
fonte
Primeiro de tudo, você precisa colocar em maiúscula o FirstLetter de seus componentes; no seu caso, o aplicativo deve ser App e a pessoa deve ser Person .
Tentei copiar seu código na esperança de encontrar o problema. Como você não compartilhou como chama o componente de aplicativo , só vejo uma maneira de resultar em um problema.
Este é o link no CodeSandbox: chamada de gancho inválida .
Por quê? Por causa do código abaixo, que está errado:
Deveria ter sido:
Para mais informações, você deve ler Rule of Hooks - React
Espero que isto ajude!
fonte
Use Letra maiúscula para definir o nome do componente funcional / React hooks componentes personalizados. "const 'app' deve ser const 'App'.
App.js
Person.js
[ReactHooks] [useState] [ReactJs]
fonte
Etapa 1: Altere o nome do arquivo src / App.js para src / app.js
Etapa 2: clique em "Sim" para "Atualizar importações para app.js".
Etapa 3: Reinicie o servidor novamente.
fonte
Sempre que trabalhar com um componente funcional React, mantenha sempre a primeira letra do nome do componente em maiúsculas para evitar esses erros do React Hooks.
No seu caso, você nomeou o componente
app
, que deve ser alterado paraApp
, como eu disse acima, para evitar o erro React Hook.fonte
fonte
Na função do aplicativo, você digitou a palavra incorretamente
setpersonSate
, faltando a letrat
, assim deve sersetpersonState
.Erro :
Solução :
fonte
Isso ocorre devido à regra ESLint para React Hooks. Encontre o link da regra aqui:
Regra ESLint para ganchos de reação
A partir de agora, a regra está descrita na linha no. 44
fonte
Não use a função de seta para criar componentes funcionais.
Faça como um dos exemplos abaixo:
Ou
Se você tiver problemas com
"ref"
(provavelmente em loops), a solução é usarforwardRef()
:fonte