Этот код пришел из здесь.
import React from 'react';
import useState from 'react'
let f = function() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick = {() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
export default f;
Во-первых, эта строка с той страницы...
import React, { useState } from 'react';
... приводит к тому, что useState имеет значение null, но я изменил эту строку. Во всяком случае, я получаю следующую ошибку...
TypeError: react__WEBPACK_IMPORTED_MODULE_1___default(...) is not a function
Эта ошибка исчезнет, если я изменю код на этот...
const [count, setCount] = [1, () => {}]
Так что я полагаю, что useState - это проблема, а не функция. Возможно, мой пользовательский импорт работает неправильно. В таком случае, почему официальный импорт не работает?
Я использую React 16.8.1. В моем файле пакетов есть эти...
"react-dom": "16.8.1",
"react": "16.8.1",
Я удалил локальную папку node_modules и запустил npm install --force -g.
Console.log на useState дает...
Не думайте так. Я могу удалить локальные node_modules, и он все еще работает.
о, вы должны перезапустить сервер.





useState — это именованный экспорт. Вы не можете импортировать его как экспорт по умолчанию.
Измените эти две строки
import React from 'react';
import useState from 'react';
к
import React, { useState } from 'react';
Я упомянул об этом в вопросе. Это приводит к тому, что useState не определено.
Не могли бы вы попробовать удалить свой package-lock.json и запустить npm i вместо npm install --force -g?
Кроме того, вы использовали create-react-app для создания проекта?
Да, я использовал приложение create-реагировать. К сожалению, удаление файла блокировки не помогло.
На самом деле я не использовал create-React-app с версией, которая поддерживает хуки. Я обновляю существующее приложение. Это имеет значение?
В идеале не должно. Простое обновление пакетов react и react-dom должно заставить все работать.
Вы должны перезапустить веб-сервер для перекомпиляции с новой версией React. Дох.
Это супер странно. Не могли бы вы использовать ссылку codeandbox или опубликовать свое репо?