开发者问题收集

React 中的 Hook 调用无效

2021-04-29
755

我对 React 还很陌生,并收到以下错误:

react-dom.development.js:14906 Uncaught Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app

我想在提交表单时使用另一个组件。因此在文件 A 中,当表单提交时,使用一个函数,在调用其他组件之前首先检查某些内容,例如:

ComponentName()

在组件上我有一些 useState 钩子:

function ComponentName() {
    const [state1, setState1] = useState('')
    const [state2, setState2] = useState('')
    const [state3, setState3] = useState('')

在页面加载时我收到此错误,有人知道哪里出了问题吗?

1个回答

您不会调用组件函数,而是将它们交给 React,并让 React 在适当的时候调用它们。因此,您永远不会在代码中编写 ComponentName() 。相反,您会使用 <ComponentName /> 作为渲染另一个组件的一部分,或者对于 React 树的最顶层,作为您传递 ReactDOM.render 的 JSX 的一部分。(或者当然,使用 React.createElement 而不是 JSX。)

您收到错误是因为如果您 调用 组件函数(如您所展示的),它不会被用作组件,因此您对钩子的调用在后台没有组件实例可供使用——因此出现错误消息。

T.J. Crowder
2021-04-29