Appel de hook invalide dans React : comprendre le problème et la résolution
L'erreur « Appel de hook invalide. Les hooks ne peuvent être appelés qu'à l'intérieur du corps d'un composant de fonction » se produit lorsque les hooks sont invoqués de manière incorrecte dans une application React. Cette erreur se produit généralement pour l'une des raisons suivantes :
Dans l'extrait de code fourni, l'erreur se produit car des hooks (en particulier le hook useState) sont utilisés dans un composant de classe. Ceci est incorrect car les hooks sont exclusivement conçus pour être utilisés dans des composants fonctionnels.
Pour résoudre le problème, le code doit être réécrit en tant que composant fonctionnel, comme indiqué ci-dessous :
<code class="javascript">import React, { useState } 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([]); const fetchAllowances = async () => { const res = await fetch('http://127.0.0.1:8000/allowances'); const data = await res.json(); setAllowances(data); }; useEffect(() => { fetchAllowances(); }, []); return ( <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> ); }; export default Allowance;</code>
En convertissant du composant à un composant fonctionnel, le hook peut être correctement utilisé, résolvant ainsi l'erreur « Appel de hook invalide ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!