繁体   English   中英

使用 reactjs 钩子时,为什么会出现“TypeError: react__WEBPACK_IMPORTED_MODULE_1___default.a.useState is not a function”错误?

[英]Why am I getting "TypeError: react__WEBPACK_IMPORTED_MODULE_1___default.a.useState is not a function" error when using reactjs hooks?

我正在尝试直接从 Material Ui(简单菜单https://material-ui.com/demos/menus/#menus )文档中使用此组件,以便显示菜单。 但是,我收到TypeError: react__WEBPACK_IMPORTED_MODULE_1___default.a.useState is not a function error with my current TypeError: react__WEBPACK_IMPORTED_MODULE_1___default.a.useState is not a function below。 我试过:

  • import React, { useState } from 'react'; 然后在const [anchorEl, setAnchorEl] = React.useState(null);去掉React 使它看起来像: const [anchorEl, setAnchorEl] = useState(null);
  • 我也尝试用数字替换null但仍然出现相同的错误。

注意:另一个尝试安装了正确的包并使我的package.json文件看起来像这样( TypeError dispatcher.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;

虽然我不确定上面的代码有什么问题(我的猜测是使用了 material-ui 的非发布版本,其中导出不是默认的,因为它的文档说明),这个错误发生在我身上,导入不正确。 我的问题是我试图

import someNonDefaultFunction from 'someModule';

在命名/非默认导入周围添加大括号为我解决了相同的错误消息:

import {someNonDefaultFunction} from 'someModule';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM