首頁 > web前端 > js教程 > 為什麼我在 React 中收到「無效的 Hook Call」錯誤?

為什麼我在 React 中收到「無效的 Hook Call」錯誤?

Susan Sarandon
發布: 2024-11-04 03:43:01
原創
889 人瀏覽過

Why Am I Getting the

理解「無效的Hook 呼叫」錯誤

在React 中,錯誤「無效的Hook 呼叫」錯誤

在React 中,錯誤「無效的Hook 呼叫。Hooks 只能在函數元件的主體」表示React hook 的使用不正確。鉤子是提供對 React 狀態和其他功能的存取的特殊函數,但它們必須在功能元件中使用,而不是類別元件。

解決類別元件的錯誤

<code class="javascript">import React, { useState, useEffect, Fragment } from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Table from '@material-ui/core/Table';
import TableBody from '@material-ui/core/TableBody';
import TableCell from '@material-ui/core/TableCell';
import TableHead from '@material-ui/core/TableHead';
import TableRow from '@material-ui/core/TableRow';
import Paper from '@material-ui/core/Paper';

const useStyles = makeStyles(theme => ({
  root: {
    width: '100%',
    marginTop: theme.spacing(3),
    overflowX: 'auto'
  },
  table: {
    minWidth: 650
  }
}));

const Allowance = () => {
  const classes = useStyles();
  const [allowances, setAllowances] = useState([]);

  useEffect(() => {
    fetch('http://127.0.0.1:8000/allowances')
      .then(data => data.json())
      .then(data => setAllowances(data));
  }, []);

  return (
    <Fragment>
      <Paper className={classes.root}>
        <Table className={classes.table}>
          <TableHead>
            <TableRow>
              <TableCell>Allow ID</TableCell>
              <TableCell align="right">Description</TableCell>
              <TableCell align="right">Allow Amount</TableCell>
              <TableCell align="right">AllowType</TableCell>
            </TableRow>
          </TableHead>
          <TableBody>
            {allowances.map(row => (
              <TableRow key={row.id}>
                <TableCell component="th" scope="row">{row.AllowID}</TableCell>
                <TableCell align="right">{row.AllowDesc}</TableCell>
                <TableCell align="right">{row.AllowAmt}</TableCell>
                <TableCell align="right">{row.AllowType}</TableCell>
              </TableRow>
            ))}
          </TableBody>
        </Table>
      </Paper>
    </Fragment>
  );
};

export default Allowance;</code>
登入後複製

提供的程式碼範例使用了類別元件(allowance),它與React hooks不相容。要解決此錯誤,您應該將類別元件轉換為函數元件。以下是更新後的程式碼:

在此功能元件中,useState 和 useEffect 掛鉤在元件主體中正確使用。你應該用這個功能元件取代原來的類別元件來解決錯誤。

以上是為什麼我在 React 中收到「無效的 Hook Call」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板