React Hook "useState" cannot be called at the top level. React Hooks must be called in a React function component or a custom React Hook function
时间: 2024-02-17 09:03:53 浏览: 234
这个错误的意思是你在函数组件之外的地方使用了 `useState` 钩子。React 钩子只能在函数组件或自定义钩子函数中使用,不能在顶层代码或类组件中使用。
例如,以下代码会导致这个错误:
```jsx
import React, { useState } from 'react';
const App = () => {
const [count, setCount] = useState(0);
return <div>{count}</div>;
};
const count = useState(0); // 这里会出现错误
class Counter extends React.Component {
render() {
const [count, setCount] = useState(0); // 这里也会出现错误
return <div>{count}</div>;
}
}
```
在上面的代码中,`App` 组件中使用了 `useState` 钩子,这是正确的。但是,在顶层代码中定义 `count` 变量并调用 `useState` 函数是错误的。另外,在类组件 `Counter` 中使用 `useState` 钩子也是错误的。
要解决这个错误,你需要将 `useState` 钩子调用移到函数组件中或自定义钩子函数中。例如,以下是一个正确的计数器组件:
```jsx
import React, { useState } from 'react';
const Counter = () => {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increase</button>
<button onClick={() => setCount(count - 1)}>Decrease</button>
</div>
);
};
export default Counter;
```
在上面的代码中,`useState` 钩子被正确地使用在了函数组件中。
阅读全文