捕捉されないランタイム エラー: useNavigate() は コンポーネントのコンテキストでのみ使用できます
P粉311563823
P粉311563823 2023-09-04 22:15:23
0
1
465

新しい反応プロジェクトを作成しました。私は反応するのが初めてで、テキストをクリックした後にナビゲートしようとしていますが、このエラーが発生します。

<ブロック引用>
捕捉されなかったランタイム エラー: × エラー useNavigate() は、 コンポーネントのコンテキストでのみ使用できます。 不変時 (http://localhost:3000/static/js/bundle.js:1123:11) useNavigateUnstable (http://localhost:3000/static/js/bundle.js:66522:102) で useNavigate で (http://localhost:3000/static/js/bundle.js:66519:46) アプリで (http://localhost:3000/static/js/bundle.js:83:81) renderWithHooks (http://localhost:3000/static/js/bundle.js:26618:22) で mountIndeterminateComponent (http://localhost:3000/static/js/bundle.js:29904:17) で beginWork で (http://localhost:3000/static/js/bundle.js:31200:20) HTMLUnknownElement.callCallback (http://localhost:3000/static/js/bundle.js:16210:18) で Object.invokeGuardedCallbackDev (http://localhost:3000/static/js/bundle.js:16254:20) で invokeGuardedCallback (http://localhost:3000/static/js/bundle.js:16311:35) で エラー useNavigate() は、 コンポーネントのコンテキストでのみ使用できます。 不変時 (http://localhost:3000/static/js/bundle.js:1123:11) useNavigateUnstable (http://localhost:3000/static/js/bundle.js:66522:102) で useNavigate で (http://localhost:3000/static/js/bundle.js:66519:46) アプリで (http://localhost:3000/static/js/bundle.js:83:81) renderWithHooks (http://localhost:3000/static/js/bundle.js:26618:22) で mountIndeterminateComponent (http://localhost:3000/static/js/bundle.js:29904:17) で beginWork で (http://localhost:3000/static/js/bundle.js:31200:20) HTMLUnknownElement.callCallback (http://localhost:3000/static/js/bundle.js:16210:18) で Object.invokeGuardedCallbackDev (http://localhost:3000/static/js/bundle.js:16254:20) で invokeGuardedCallback (http://localhost:3000/static/js/bundle.js:16311:35) で エラー useNavigate() は、 コンポーネントのコンテキストでのみ使用できます。 不変時 (http://localhost:3000/static/js/bundle.js:1123:11) useNavigateUnstable (http://localhost:3000/static/js/bundle.js:66522:102) で useNavigate で (http://localhost:3000/static/js/bundle.js:66519:46) アプリで (http://localhost:3000/static/js/bundle.js:83:81) renderWithHooks (http://localhost:3000/static/js/bundle.js:26618:22) で mountIndeterminateComponent (http://localhost:3000/static/js/bundle.js:29904:17) で beginWork で (http://localhost:3000/static/js/bundle.js:31200:20) beginWork$1 (http://localhost:3000/static/js/bundle.js:36163:18) PerformUnitOfWork (http://localhost:3000/static/js/bundle.js:35432:16) で workLoopSync (http://localhost:3000/static/js/bundle.js:35355:9)

この問題に対する解決策が見つかりません。

これらはファイル内で使用したコードです。app.js代番号:

'./logo.svg' からロゴをインポートします; './App.css' をインポートします。 './components/LoginForm' から LoginForm をインポートします。 「./signup」からサインアップをインポートします。 import { BrowserRouter as Router, Routes, Route, Link, useNavigate } from 'react-router-dom'; 関数 App() { const navigate = useNavigate(); const handleSignUpClick = () => { ナビゲート('/サインアップ'); } 戻る (
      <ルーター>
       

サインアップ

<ルート> <ルートパス="/" element={<ログインフォーム />} /> <ルートパス="/signup" element={<サインアップ />} />
); } デフォルトのアプリをエクスポート;

これは LoginForm.js の代番号:

import React, { useState } from 'react'; import { Button、Form、FormGroup、Label、Input、InputGroup } from 'reactstrap'; import { FaEye, FaEyeSlash } から 'react-icons/fa'; 関数ログインフォーム() { const [ユーザー名, setユーザー名] = useState(''); const [パスワード, setPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const handleSubmit = (イベント) => { //送信を処理します } const toggleShowPassword = () => { setShowPassword(!showPassword); } 戻る ( 
<フォーム onSubmit={handleSubmit}> <フォームグループ> <入力タイプ="テキスト"名前= "ユーザー名" id="ユーザー名" value={ユーザー名} onChange={e => setUsername(e.target.value)} /> <フォームグループ> <="パスワード"のラベル>パスワード <入力グループ> <入力タイプ={showPassword ? 'テキスト' : 'パスワード'} name="パスワード" id="パスワード"値={パスワード} onChange={e => setPassword(e.target.value)} /> <ボタン onClick={toggleShowPassword}> {パスワードを表示 ? <ファアイスラッシュ /> : }
<ボタン>送信
); } デフォルトのログインフォームをエクスポート;

これはsignup.jsの代コード:

import './App.css'; 関数 SignUp() { 戻る ( 

アプリケーション

); } デフォルトのサインアップをエクスポート;

P粉311563823
P粉311563823

全員に返信 (1)
P粉301523298

useNavigateフックは、ルーターによって提供されるルーティング コンテキスト (この場合はBrowserRouterなど) の外部では使用できません。この問題を解決するには、BrowserRouterを ReactTree の上位の位置に移動することができますが、もっと簡単な解決策があります。元のアンカー タグを RRDLinkに変換するだけです。リーリー リーリー

いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!