タイトルは次のように書き換えられました: TypeError: isOpen は呼び出し可能な関数ではありません
P粉642920522
P粉642920522 2023-09-01 16:14:48
0
1
539
<p>クラスベースのコンポーネントを関数ベースのコンポーネントに変換しようとしています。これは REACT の学習中に書いたものですが、変換中に isOpen は関数ではないというエラーが発生しました。これを状態として定義し、handleToggle() で呼び出してから、コンポーネントのロゴで呼び出したので、少し混乱しました。 </p> <pre class="brush:php;toolbar:false;">import React, { useState, useEffect } from "react"; 「../images/logo.svg」からロゴをインポートします; import { FaAlignRight } から "react-icons/fa"; import { Link } from "react-router-dom"; 「@mui/material/Badge」からバッジをインポートします。 '@mui/material/Menu' からメニューをインポートします。 '@mui/material/MenuItem' から MenuItem をインポートします。 デフォルト関数をエクスポート Navbar(){ const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); const handleClick = (イベント) => { setAnchorEl(event.currentTarget); }; const handleClose = () => { setAnchorEl(null); }; const [isOpen, setIsOpen] = useState(null); useEffect(() =>{ ハンドルトグル(); }); // 状態 = { // isOpen: false, // }; const handleToggle = () => { setIsOpen(isOpen() ); }; 戻る ( <nav className="navbar"> <div className="nav-center"> <div className="nav-header"> <リンク先="/"> <img src={logo} alt="ビーチ リゾート" /> </リンク> <ボタン type=「ボタン」 className="nav-btn" onClick={ハンドルトグル} > <FaAlignRight className="nav-icon" /> </ボタン> </div>
  • ; <Link to="/">ホーム</Link> </li>
  • ; <リンク先="/rooms">部屋</Link> </li> </ul> <バッジバッジコンテンツ={4} カラー="プライマリ" id="基本ボタン" aria-controls={開く? '基本メニュー' : 未定義} aria-haspopup="true" aria-expanded={開く? 'true' : 未定義} onClick={ハンドルクリック} > <i className="fa-solid fa-cart-shopping text-light" style={{ fontSize: 25、カーソル: "ポインタ" }} ></i> </バッジ> </div> <メニュー id="基本メニュー" アンカーEl={アンカーEl} 開く={開く} onClose={ハンドルクローズ} MenuListProps={{ 'aria-labeledby': '基本ボタン', }} > <MenuItem onClick={handleClose}>プロファイル</MenuItem> <MenuItem onClick={handleClose}>私のアカウント</MenuItem> <MenuItem onClick={handleClose}>ログアウト</MenuItem> </メニュー> </ナビ> ); }</pre> </p>どのような約束も非常に重要です。
P粉642920522
P粉642920522

全員に返信(1)
P粉951914381

useState 状態に格納されている値とその更新に使用される関数の 2 つの要素を含む配列を返します。 const [isOpen, setIsOpen] = useState(null) を呼び出す場合、isOpen は値 (最初は null に設定されます)、setIsOpen はそれを更新するために使用される関数です。

const handleToggle = () => { setIsOpen(isOpen() ) } と書くと、null 値を呼び出そうとしていますが、これは不可能です。機能。これがエラー メッセージの内容です。

isOpen の値を切り替えたい場合は、isOpen をブール値として宣言し、反対の値 isOpen #setIsOpen を指定して ## を呼び出す必要があります。 リーリー ただし、今のように、依存関係配列を使用せずに

useEffect

handleToggle を呼び出すと、再レンダリングのたびに呼び出されるため、希望どおりではない可能性があります。 。ほとんどの場合、ユーザー インタラクションに応答して、たとえば onClick などの HTML 要素イベントに応答してこの関数を呼び出すことができます。それ以外の場合は、コードをリファクタリングして、必要な依存関係を useEffect に追加する必要があります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート