Ошибка при использовании useState в официальном примере

Этот код пришел из здесь.

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 дает...

Ошибка при использовании useState в официальном примере

Это супер странно. Не могли бы вы использовать ссылку codeandbox или опубликовать свое репо?

Yangshun Tay 11.02.2019 03:12

Не думайте так. Я могу удалить локальные node_modules, и он все еще работает.

Ian Warburton 11.02.2019 14:18

о, вы должны перезапустить сервер.

Ian Warburton 11.02.2019 14:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
3
2 152
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

useState — это именованный экспорт. Вы не можете импортировать его как экспорт по умолчанию.

Измените эти две строки

import React from 'react';
import useState from 'react';

к

import React, { useState } from 'react';

Я упомянул об этом в вопросе. Это приводит к тому, что useState не определено.

Ian Warburton 10.02.2019 17:26

Не могли бы вы попробовать удалить свой package-lock.json и запустить npm i вместо npm install --force -g?

Dinesh Pandiyan 10.02.2019 17:33

Кроме того, вы использовали create-react-app для создания проекта?

Dinesh Pandiyan 10.02.2019 17:35

Да, я использовал приложение create-реагировать. К сожалению, удаление файла блокировки не помогло.

Ian Warburton 10.02.2019 17:48

На самом деле я не использовал create-React-app с версией, которая поддерживает хуки. Я обновляю существующее приложение. Это имеет значение?

Ian Warburton 10.02.2019 21:17

В идеале не должно. Простое обновление пакетов react и react-dom должно заставить все работать.

Dinesh Pandiyan 11.02.2019 09:17
Ответ принят как подходящий

Вы должны перезапустить веб-сервер для перекомпиляции с новой версией React. Дох.

Другие вопросы по теме