Я пытаюсь использовать перехватчики для решения простой проблемы
const [personState,setPersonState] = useState({ DefinedObject });
со следующими зависимостями.
"dependencies": {
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-scripts": "3.0.0"
}
но я все еще получаю следующую ошибку:
./src/App.js
Строка 7:
React Hook «useState» вызывается в функции «app», которая не является ни компонентом функции React, ни настраиваемой функцией React Hook. React-hooks / rules-of-hooks.Строка 39:
'состояние' не определено
no-undefВыполните поиск по ключевым словам, чтобы узнать больше о каждой ошибке.
Код компонента ниже:
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;
Компонент человека
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
Бишну
источник
источник
Ответы:
Попробуйте использовать слово "приложение" с заглавной буквы
В React компоненты должны начинаться с заглавных букв, а настраиваемые хуки должны начинаться с
use
.источник
Checks if the node is a React component name. React component names must always start with a non-lowercase letter.
.Я чувствую, что мы делаем один и тот же курс в Удеми.
Если так, просто используйте
const app
к
const App
Делай так же хорошо, как и для
к
У меня это хорошо работает.
источник
Насколько мне известно, в этот пакет входит линтер. И для этого требуется, чтобы компоновка начиналась с заглавной буквы. Пожалуйста, проверь это.
Однако как по мне это печально.
источник
Используйте заглавные буквы в имени функции.
источник
Используйте приложение const вместо приложения const
источник
Просто попробуйте использовать название приложения с заглавной буквы
источник
Вы получаете эту ошибку: "React Hook" useState "вызывается в функции" App ", которая не является ни компонентом функции React, ни пользовательской функцией React Hook"
Решение: вам в основном нужно использовать функцию с заглавной буквы.
Например:
источник
Первый символ вашей функции должен быть прописным
источник
Я была такая же проблема. Оказывается, проблема заключалась в использовании заглавной буквы «А» в «приложении». Кроме того, если вы делаете экспорт:
export default App;
убедитесь, что вы экспортируете одноименное «приложение».источник
Компоненты должны начинаться с заглавных букв. Также не забудьте изменить первую букву в строке для экспорта!
источник
У вас правильный импорт?
источник
Имена компонентов React должны начинаться с заглавной буквы, а пользовательские функции перехватчиков должны начинаться с ключевого слова use, чтобы идентифицировать их как функцию перехвата реакции.
Итак, используйте компоненты вашего приложения в App
источник
У меня была такая же проблема, но не с приложением. У меня был собственный класс, но я использовал строчную букву для начала имени функции, а также получил ошибку.
Изменил первую букву имени функции и строку экспорта на CamelCase, и ошибка исчезла.
в моем случае конечный результат был примерно таким:
это решило мою проблему.
источник
Решение простое: исправьте «app» и напишите «App» с первым символом в верхнем регистре.
источник
Сделать приложение заглавным, чтобы приложение наверняка сработало.
источник
В JSX имя тега в нижнем регистре рассматривается как собственный компонент html. Чтобы отреагировать на распознавание функции как компонента React, необходимо использовать имя с заглавной буквы.
https://reactjs.org/docs/jsx-in-depth.html#html-tags-vs.-react-components
источник
Замените это
с этим
источник
Сделайте имя функции заглавным. У меня это работает.
источник
Для следующей ошибки используйте заглавную букву компонента, например, а также экспорт.
источник
Решение, как уже указала Юки, состоит в том, чтобы использовать имя компонента с заглавной буквы. Важно отметить, что заглавными буквами должен быть не только компонент приложения по умолчанию, но и все компоненты:
Это связано с пакетом eslint-plugin-response-hooks, в частности с функцией isComponentName () внутри скрипта RulesOfHooks.js.
Официальное объяснение из FAQ по хукам :
источник
Прежде всего, вам нужно указать FirstLetter ваших компонентов в верхнем регистре, в вашем случае app должно быть App, а person - Person .
Я попытался скопировать ваш код в надежде найти проблему. Поскольку вы не рассказали, как вы вызываете компонент приложения , я вижу только один способ привести к проблеме.
Это ссылка в CodeSandbox: Неверный вызов ловушки .
Зачем? Из-за неправильного кода ниже:
Должно было быть:
Для получения дополнительной информации вы должны прочитать Правило хуков - Реагировать.
Надеюсь это поможет!
источник
Используйте заглавную букву для определения имени функционального компонента / пользовательских компонентов React перехватывает. «const 'app' должно быть const 'App».
App.js
Person.js
[ReactHooks] [useState] [ReactJs]
источник
Шаг 1. Измените имя файла src / App.js на src / app.js
Шаг 2: Нажмите «Да» для «Обновить импорт для app.js».
Шаг 3: перезапустите сервер снова.
источник
При работе с функциональным компонентом React всегда сохраняйте первую букву имени компонента в верхнем регистре, чтобы избежать этих ошибок React Hooks.
В вашем случае вы назвали компонент
app
, который следует изменить наApp
, как я сказал выше, чтобы избежать ошибки React Hook.источник
источник
В функции приложения вы неправильно написали слово
setpersonSate
, пропустив буквуt
, значит так и должно бытьsetpersonState
.Ошибка :
Решение :
источник
Это из-за правила ESLint для React Hooks. Найдите ссылку на правило здесь:
Правило ESLint для React Hooks
На данный момент правило описано в строке № 44.
источник
Компоненты React (как функциональные, так и классовые) должны начинаться с заглавной буквы. подобно
React идентифицирует определенные пользователем компоненты, следуя этой семантике. JSX React преобразуется в функцию React.createElement, которая возвращает объектное представление узла dom. Свойство type этого объекта сообщает, является ли он определяемым пользователем компонентом или элементом dom, таким как div. Поэтому важно следовать этой семантике.
Поскольку ловушка useState может использоваться только внутри функционального компонента (или настраиваемой ловушки), это причина того, что вы получаете сообщение об ошибке, потому что реакция не может идентифицировать ее как определяемый пользователем компонент.
useState также может использоваться внутри настраиваемых хуков, которые используются для повторного использования и абстракции логики. Итак, согласно правилам хуков, имя кастомного хука должно начинаться с префикса "use" и должно быть в верблюжьем регистре.
источник
Не используйте функцию стрелки для создания функциональных компонентов.
Сделайте как один из примеров ниже:
Или
Если у вас есть проблемы
"ref"
(возможно, в циклах), решение заключается в использованииforwardRef()
:источник