ホームページ > 記事 > ウェブフロントエンド > React アプリケーションで「無効なフック呼び出し」エラーが発生するのはなぜですか?
React での無効なフック呼び出しエラー: 総合ガイド
React を使用してテーブル内のデータを表示しようとすると、エラーが発生する場合があります「無効なフック呼び出しです。フックは関数コンポーネントの本体内でのみ呼び出すことができます。」このエラーはさまざまな理由で発生し、その解決方法を理解することが React 開発にとって重要です。
エラーの原因
マテリアル UI の例
次のコード例を考えてみましょう:
<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>
解決策
この例では、コンポーネントがクラス コンポーネントとして定義されているためにエラーが発生します。後の React バージョンで導入された React フックは、機能コンポーネント内でのみ使用できます。この問題を解決するには:
さらなるサポート
「無効なフック呼び出し」エラーを修正するための追加のガイダンスについては:
以上がReact アプリケーションで「無効なフック呼び出し」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。