Maison > Article > interface Web > Pourquoi est-ce que je reçois l'erreur « Appel de hook invalide » dans mon application React ?
Erreur d'appel de hook non valide dans React : un guide complet
Lorsque vous essayez d'afficher des données dans un tableau à l'aide de React, vous pouvez rencontrer l'erreur "Appel de hook invalide. Les hooks ne peuvent être appelés qu'à l'intérieur du corps d'un composant de fonction." Cette erreur se produit pour diverses raisons, et comprendre comment la résoudre est crucial pour le développement de React.
Causes de l'erreur
Exemple avec Material-UI
Considérez l'exemple de code suivant :
<code class="javascript">import React, { Component } 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 } })); class allowance extends Component { constructor() { super(); this.state = { allowances: [] }; } componentWillMount() { fetch('http://127.0.0.1:8000/allowances') .then(data => { return data.json(); }) .then(data => { this.setState({ allowances: data }); console.log('allowance state', this.state.allowances); }); } render() { const classes = useStyles(); 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> { this.state.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>
Solution
Dans cet exemple, l'erreur se produit car le composant est défini comme un composant de classe. Les hooks React, introduits dans les versions ultérieures de React, ne peuvent être utilisés que dans les composants fonctionnels. Pour résoudre le problème :
Assistance supplémentaire
Pour des conseils supplémentaires sur la correction de 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!