我试图用React前端写一个SPA,而我写的极少的代码却在抱怨一个无效的钩子调用。
据我所知,根据错误信息,造成这个错误的原因主要有三个。
- 你的React和渲染器(比如React DOM)的版本可能不匹配。
- 你可能违反了钩子的规则
- 你可能在同一个应用程序中拥有多个React副本
我查过了 npm ls react
和 npm ls react-dom
而且他们都报告说各自的包只安装了一个,版本是16.13.1,所以我不认为这是原因1或原因3。至于违反了hooks规则,鉴于代码就是这样,这似乎是不可能的。
import { useState } from "react";
import ReactDOM from "react-dom";
const Main = () => {
const [count, setCount] = useState(0);
return(
<>
</>
);
};
const reactRoot = document.getElementById("react-root");
ReactDOM.render(Main(), reactRoot);
在我看来这是一个完美的功能组件 很明显没有循环或条件。这里还可能有什么其他问题?
正如评论中所指出的,我的意思是使用JSX标签。<Main />
而不是叫 Main()
.