React 16.7 TypeError中的React Hooks问题:Object(...)不是一个函数

时间:2018-12-20 02:22:30

标签: reactjs react-hooks

我正在运行最新版本的React,但出现此错误 enter image description here 我有一个使用React Hooks的简单组件,您可以在这里看到:

import React, { useState } from "react";

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

  const incrementCount = () => {
    setCount(count + 1);
  };
  return (
    <div>
      <h1>Count:{count} </h1>
      <button onClick={incrementCount}>Click Me</button>
    </div>
  );
};

export default AppFunction;

我在堆栈溢出中发现的所有内容都说要升级库,但是我拥有最新版本(16.7.0),并且尝试了Alpha版本但没有运气,我在做什么错了?

package.json

"dependencies": {
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-scripts": "2.1.1"
  },

3 个答案:

答案 0 :(得分:9)

更新

挂钩现在作为React v16.8.0的一部分发布。您可以通过升级React版本来使用钩子

有关API的更多详细信息,请参见 docs


反应16.7.0不包含钩子。

按照React blog

  

我们的最新版本包含一个重要的性能错误修正,用于   React.lazy。尽管没有API更改,但我们将其发布为   次要而不是补丁。

为了在代码中运行钩子,请参考How to use new Feature Hooks in React?

答案 1 :(得分:2)

我尝试在package.json中使用以下内容,但不起作用。

"react": "16.7.0-alpha.2",
"react-dom": "16.7.0-alpha.2",

以下是可行的

"react": "next",
"react-dom": "next",

编辑

反应版本v16.8.0内有Hooks。使用它。

答案 2 :(得分:0)

编辑package.json

"react": "16.7.0-alpha.2",
"react-dom": "16.7.0-alpha.2",
"react-router-dom": "4.4.0-beta.6",

并运行yarn

react发布了16.7.0,但是没有react挂钩。如果您使用'^react@16.7.0-alpha.2',请删除yarn.lock,它将安装react@16.7.0。因此,您必须删除'^'并使用'react@16.7.0-alpha.2'。