开发者问题收集

reactjs TypeError:使用钩子时 Object(…) 不是一个函数

2019-06-07
13108

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

TypeError: Object(...) is not a function

当我删除 Hooks 并在没有任何状态的情况下导出它时,它可以正常工作。将相同的代码导出为 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;

下面是我导入和使用功能组件的方法。

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

我正在使用 react 16.6.3 并使用 create-react-app

1个回答

I am using react 16.6.3...

这就是问题所在。Hooks 是在 v16.8 中添加的,因此代码中的 useStateundefined

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

T.J. Crowder
2019-06-07