捕捉されないランタイム エラー: useNavigate() は <Router> コンポーネントのコンテキストでのみ使用できます
P粉311563823
P粉311563823 2023-09-04 22:15:23
0
1
546
<p>新しい反応プロジェクトを作成しました。私は反応するのが初めてで、テキストをクリックした後にナビゲートしようとしていますが、このエラーが発生します。 </p> <ブロック引用> <pre class="brush:php;toolbar:false;">捕捉されなかったランタイム エラー: × エラー useNavigate() は、<Router> コンポーネントのコンテキストでのみ使用できます。 不変時 (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() は、<Router> コンポーネントのコンテキストでのみ使用できます。 不変時 (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() は、<Router> コンポーネントのコンテキストでのみ使用できます。 不変時 (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)</pre> </blockquote> <p>この問題に対する解決策が見つかりません。 </p> <p>これらはファイル内で使用したコードです。app.js代番号:</p> <pre class="brush:php;toolbar:false;">'./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 = () => { ナビゲート('/サインアップ'); } 戻る ( <ルーター> <div className="ログイン">

<a className="ナビゲーションリンクがアクティブ" aria-current="ページ" href="#" onClick={handleSignUpClick}> サインアップ </a> </h3> <ルート> <ルートパス="/" element={<ログインフォーム />} /> <ルートパス="/signup" element={<サインアップ />} /> </ルート> </div> </ルーター> ); } デフォルトのアプリをエクスポート;</pre> <p>これは LoginForm.js の代番号:</p> <pre class="brush:php;toolbar:false;">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); } 戻る ( <div className="フォームボックス"> <フォーム onSubmit={handleSubmit}> <フォームグループ> <Label for="username">Username</Label> <入力タイプ="テキスト"名前= "ユーザー名" id="ユーザー名" value={ユーザー名} onChange={e => setUsername(e.target.value)} /> </フォームグループ> <フォームグループ> <="パスワード"のラベル>パスワード</ラベル> <入力グループ> <入力タイプ={showPassword ? 'テキスト' : 'パスワード'} name="パスワード" id="パスワード"値={パスワード} onChange={e => setPassword(e.target.value)} /> <ボタン onClick={toggleShowPassword}> {パスワードを表示 ? <ファアイスラッシュ /> : <FaEye />} </ボタン> </InputGroup> </フォームグループ> <div className="text-center"> <ボタン>送信</ボタン> </div> </フォーム> </div> ); } デフォルトのログインフォームをエクスポート;</pre> <p>これはsignup.jsの代コード:</p> <pre class="brush:php;toolbar:false;">import './App.css'; 関数 SignUp() { 戻る ( <div className="ログイン"> <h1>アプリケーション</h1> </div> ); } デフォルトのサインアップをエクスポート;</pre></p>

P粉311563823
P粉311563823

全員に返信(1)
P粉301523298

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

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