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