Почему я получаю TypeError: response__WEBPACK_IMPORTED_MODULE_1 ___ default.a.useState не является ошибкой функции при использовании хуков responsejs?

Я пытаюсь использовать этот компонент прямо из пользовательского интерфейса материалов (простое меню https://material-ui.com/demos/menus/#menus), чтобы отобразить меню. Однако я получаю TypeError: react__WEBPACK_IMPORTED_MODULE_1___default.a.useState is not a function ошибку с моей текущей попыткой ниже. Я пытался:

  • import React, { useState } from 'react';, а затем избавился от React внутри const [anchorEl, setAnchorEl] = React.useState(null);, чтобы он выглядел так: const [anchorEl, setAnchorEl] = useState(null);
  • Я также попытался заменить null числом, но все равно получил ту же ошибку.

Примечание. Еще одна попытка установила правильные пакеты и сделала мой файл package.json следующим образом (Диспетчер TypeError.useState не является функцией при использовании React Hooks):

{
  "name": "speedy-react",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@material-ui/core": "^3.9.0",
    "@material-ui/icons": "^3.0.2",
    "classnames": "^2.2.6",
    "node-sass": "^4.11.0",
    "prop-types": "^15.6.2",
    "react": "16.7.0-alpha.0",
    "react-dom": "16.7.0-alpha.0",
    "react-test-renderer": "16.7.0-alpha.0",
    "react-scripts": "2.1.3"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

Снимок экрана с ошибкой:

введите описание изображения здесь

Что я делаю не так и как это исправить?

import React from 'react';
import Button from '@material-ui/core/Button';
import Menu from '@material-ui/core/Menu';
import MenuItem from '@material-ui/core/MenuItem';

const SimpleMenu = () => {
    const [anchorEl, setAnchorEl] = React.useState(null);

    function handleClick(event) {
        setAnchorEl(event.currentTarget);
    }

    function handleClose() {
        setAnchorEl(null);
    }

    return (
        <div>
            <Button
                aria-owns={anchorEl ? 'simple-menu' : undefined}
                aria-haspopup="true"
                onClick={handleClick}
            >
                Open Menu
            </Button>
            <Menu id="simple-menu" anchorEl={anchorEl} open={Boolean(anchorEl)} onClose={handleClose}>
                <MenuItem onClick={handleClose}>Profile</MenuItem>
                <MenuItem onClick={handleClose}>My account</MenuItem>
                <MenuItem onClick={handleClose}>Logout</MenuItem>
            </Menu>
        </div>
    );
};

export default SimpleMenu;

person greyskies    schedule 17.01.2019    source источник
comment
Используйте последнюю альфа-версию React   -  person Oscar    schedule 17.01.2019
comment
@ Оскар, как я могу это обеспечить?   -  person greyskies    schedule 17.01.2019
comment
npm i --save react@next react-dom@next должен это делать :)   -  person Oscar    schedule 17.01.2019
comment
@Oscar да, я пробовал это, но теперь я получаю TypeError: Cannot set property 'current' of undefined.   -  person greyskies    schedule 17.01.2019
comment
вы можете показать строку, на которую указывает эта ошибка? Я не вижу свойства current в указанном вами коде   -  person Oscar    schedule 17.01.2019
comment
@Oscar Я добавил скриншот ошибки   -  person greyskies    schedule 17.01.2019
comment
Позвольте нам продолжить это обсуждение в чате.   -  person greyskies    schedule 17.01.2019
comment
Каково было решение этой проблемы?   -  person Matthew    schedule 01.02.2019


Ответы (1)


Хотя я не уверен, что не так в приведенном выше коде (я предполагаю, что используется не-релизная сборка material-ui, в которой экспорт не был по умолчанию, как указано в документации), эта ошибка возникла у меня с неправильным импортом. Моя проблема заключалась в том, что я пытался

import someNonDefaultFunction from 'someModule';

Добавление фигурных скобок вокруг именованного / нестандартного импорта разрешило для меня то же сообщение об ошибке:

import {someNonDefaultFunction} from 'someModule';
person rodamn    schedule 13.09.2019