我有这个组成部分:
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
[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 | });
我做错什么了?
可能有很多原因,大多数是由于版本不兼容或使用^in造成的package.json:
^
package.json
react
react-dom
确保您还更新了该react-dom软件包,并且该软件包 的版本与相同react。总的来说react,react- dom应该package.json与React团队一起更新它们的版本相同。
react- dom
如果要安装React16.7.0-alpha.2,请检查您没有使用,^因为您将安装16.7,它没有钩子。
16.7.0-alpha.2
范例package.json:
{ ... "dependencies": { "react": "16.8.4", // Make sure version is same as react-dom "react-dom": "16.8.4", ... } }
react-test-renderer
如果您使用的是Jest,请确保react-test-renderer与react和的版本相同react-dom:
{ ... "dependencies": { "react": "16.8.4", "react-dom": "16.8.4", "react-test-renderer": "16.8.4", ... } }