javascript - TypeError dispatcher.useState не является функцией при использовании React Hooks




reactjs react-hooks (2)

У меня есть этот компонент:

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 |   });

Что я сделал не так?


Вы можете получить ту же ошибку при использовании шутки. Поэтому, чтобы исправить ошибку, мне пришлось обновить реагировать на тестирование, чтобы иметь ту же версию, что и реагировать и реагировать

   yarn add -D react-test-[email protected]

Или же

     npm i react-test-[email protected]

Все реагировать, реагировать-дом и реагировать-тест-рендерер должен содержать одну и ту же версию

    "react": "^16.7.0-alpha.0",
    "react-dom": "^16.7.0-alpha.0",
    "react-test-renderer": "^16.7.0-alpha.0"

Причин может быть много, и большинство из них связано с несовместимостью версий:

  1. Убедитесь, что вы также обновили react-dom , и он имеет ту же версию, что и react . В целом, react и react-dom всегда должны быть одной и той же версией в package.json как команда React обновляет их вместе.

Пример package.json :

{
  ...
  "dependencies": {
    "react": "^16.7.0-alpha.0",
    "react-dom": "^16.7.0-alpha.0", // Make sure version is the same as react
    ...
  }
}
  1. Если вы используете Jest, убедитесь, что react-test-renderer имеет ту же версию, что и react-dom :

Пример package.json :

{
  ...
  "dependencies": {
    "react": "^16.7.0-alpha.0",
    "react-dom": "^16.7.0-alpha.0",
    "react-test-renderer": "^16.7.0-alpha.0",
    ...
  }
}




react-hooks