javascript - TypeError : react__WEBPACK_IMPORTED_MODULE_6___default. a.useState 不是函数

标签 javascript reactjs material-ui

下面我提供了 ReactJS 代码的简化草图(基于 material-ui )。这段代码无法编译,因为我可能在错误的位置添加了函数handleClickOpen()和函数handleClose()。 我该如何修复它?

特别是,以下是错误消息:

TypeError: react__WEBPACK_IMPORTED_MODULE_6___default.a.useState is not a function

import React, { Component, Fragment } from 'react';
import Slide from '@material-ui/core/Slide';


const Transition = React.forwardRef(function Transition(props, ref) {
  return <Slide direction="up" ref={ref} {...props} />;
});


class BottomControls extends Component {
    render() {

        const [open, setOpen] = React.useState(false);

        function handleClickOpen() {
          setOpen(true);
        }

        function handleClose() {
          setOpen(false);
        }

        return (
          <Fragment>
             # ...
          </Fragment>
        );
    }
}

export default BottomControls;

最佳答案

  1. useState 这样的钩子(Hook)仅适用于功能组件

  2. 它们应该在渲染函数之外调用

  3. React和react-dom需要是16.8或更高版本

import React, { useState, Fragment } from 'react';
import Slide from '@material-ui/core/Slide';


const Transition = React.forwardRef(function Transition(props, ref) {
  return <Slide direction="up" ref={ref} {...props} />;
});


function BottomControls(props) {
  const [open, setOpen] = React.useState(false);
  function handleClickOpen() { setOpen(true); }
  function handleClose() { setOpen(false); }
  return (
    <Fragment>
      // whatever
    </Fragment>
  )
}

export default BottomControls;

关于javascript - TypeError : react__WEBPACK_IMPORTED_MODULE_6___default. a.useState 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57348956/

相关文章:

javascript - 尝试使用 .submit 在表单提交上触发 jquery 验证

reactjs - Redux - 未显式调用时调度操作

javascript - React 页面不会停止刷新

javascript - 如何获取列表中卡片的 ID 或索引?

javascript - 在 MongoDb 中使用 mapReduce 获取文档(行)计数

javascript - 从 chrome 扩展中的 html 中删除 div

reactjs - 如何将本地创建的函数和变量作为组件中的 props 传递?

javascript - 如何在 Material UI 中删除芯片

reactjs - Material-UI:一个组件正在将 SwitchBase 不受控制的检查状态更改为受控

javascript - Nodejs 一次触发两个请求