小编典典

使用React Hooks时TypeError dispatcher.useState不是函数

reactjs

我有这个组成部分:

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";

function App() {
  const [count, setCount] = useState(0);
  useEffect(() => {
    document.title = `You clicked ${count} times`;
  });

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

export default App;

因为我想通过在我的上尝试新的React钩子提案,但出现了一个错误:[email protected]``package.json

TypeError: dispatcher.useState is not a function

  2 | import ReactDOM from "react-dom";
  3 | 
  4 | function App() {
> 5 |   const [count, setCount] = useState(0);
    |                                     ^
  6 |   useEffect(() => {
  7 |     document.title = `You clicked ${count} times`;
  8 |   });

我做错什么了?


阅读 369

收藏
2020-07-22

共1个答案

小编典典

可能有很多原因,大多数是由于版本不兼容或使用^in造成的package.json

1.确保reactreact-dom的版本相同

确保您还更新了该react-dom软件包,并且该软件包 的版本与相同react。总的来说reactreact- dom应该package.json与React团队一起更新它们的版本相同。

如果要安装React16.7.0-alpha.2,请检查您没有使用,^因为您将安装16.7,它没有钩子。

范例package.json

{
  ...
  "dependencies": {
    "react": "16.8.4", // Make sure version is same as react-dom
    "react-dom": "16.8.4",
    ...
  }
}

2. react-test-renderer是相同的版本reactreact-dom

如果您使用的是Jest,请确保react-test-rendererreact和的版本相同react-dom

范例package.json

{
  ...
  "dependencies": {
    "react": "16.8.4",
    "react-dom": "16.8.4",
    "react-test-renderer": "16.8.4",
    ...
  }
}
2020-07-22