reactjs TypeError: Object(...) is not a function when using hooks

sau*_*abh 4 javascript reactjs react-hooks

我正在尝试使用 react 钩子导出一个正常的功能组件,但出现此错误。

类型错误:Object(...) 不是函数

当我移除挂钩并在没有任何状态的情况下将其导出时,它可以工作。导出与 Class 组件相同的代码也有效。

import React,{ useState } from 'react';

const  Mycomponent = () => {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

export default Mycomponent;
Run Code Online (Sandbox Code Playgroud)

这是我导入和使用功能组件的方式。

import Mycomponent from './mycomponet';
class MYClassComponent extends Component {
  render() {
    return (
      <Mycomponent />
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用react 16.6.3和使用create-react-app.

T.J*_*der 9

我正在使用反应 16.6.3 ...

那就是问题所在。钩子是在 v16.8 中添加的,所以useState在你的代码中是undefined.

(这是转译对你隐藏错误的时候之一[如果你需要支持旧环境,你没有太多选择]。如果这是一个原生import语句,它会失败并显示一个有用的错误,说 React 没有没有useState命名导出。但是当使用 CJS 或 AMD 版本的 React 时,您的代码会被转换为正在执行的操作var useState = React.useState;,因此它不会出错,它只是给您undefined ——这不是一个函数。:-))