Heim  >  Artikel  >  Web-Frontend  >  Warum erhalte ich in React den Fehler „Ungültiger Hook-Aufruf“?

Warum erhalte ich in React den Fehler „Ungültiger Hook-Aufruf“?

Susan Sarandon
Susan SarandonOriginal
2024-11-04 03:43:01850Durchsuche

Why Am I Getting the

Den Fehler „Ungültiger Hook-Aufruf“ verstehen

In React wird der Fehler „Ungültiger Hook-Aufruf“ angezeigt. Hooks können nur innerhalb von aufgerufen werden Hauptteil einer Funktionskomponente“ zeigt an, dass ein React-Hook falsch verwendet wird. Hooks sind spezielle Funktionen, die Zugriff auf den React-Status und andere Funktionen ermöglichen. Sie müssen jedoch innerhalb funktionaler Komponenten und nicht innerhalb von Klassenkomponenten verwendet werden.

Beheben des Fehlers für Klassenkomponenten

Das bereitgestellte Codebeispiel verwendet eine Klassenkomponente (allowance), die nicht mit React-Hooks kompatibel ist. Um diesen Fehler zu beheben, sollten Sie die Klassenkomponente in eine Funktionskomponente konvertieren. Hier ist der aktualisierte Code:

<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>

In dieser Funktionskomponente werden die Hooks „useState“ und „useEffect“ korrekt im Hauptteil der Komponente verwendet. Sie sollten die ursprüngliche Klassenkomponente durch diese Funktionskomponente ersetzen, um den Fehler zu beheben.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in React den Fehler „Ungültiger Hook-Aufruf“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn