[解決済み】react-router-domのuseHistory()を正しく使用する方法は?
2022-04-28 15:32:47
質問
使用方法
useHistory()
を正しく理解できますか?リアクトコンポーネントから別のリアクトコンポーネントへの遷移ができないのですが。
ReactのドキュメントやStack Overflowの説明によると、App.jsからMyComponent.jsに移行することができないようです。
例えば、私は次のようなことを試しています。
/* **App.js ** */
/* Import modules */
import React from 'react';
import { useHistory } from 'react-router-dom'; // version 5.2.0
function App()
{
let history = useHistory ();
const handleClick = () => {
history.push ('./pages/MyComponent');
}
return (
<div className="App">
<button onClick={handleClick}>Next page ==></button>
</div>
);
}
この例もテストしてみましたが、ボタンが押されると出力は以下のエラーを投げます。
TypeError: 未定義のプロパティ 'push' を読み取ることができません。
何かが漏れているように見えるのですが、バベル側のミスでしょうか?
プロジェクトのリアクト構造。
+ Root/
+ src/
- App.js
- index.js
+ pages/
- MyComponent.js
解決方法は?
を使用することはできません。
useHistory
フックを使用して、別のページにリダイレクトすることができます。
React Routerを使うには、アプリケーションを適切に設定する必要があります。この例を見てください。
https://reactrouter.com/web/example/basic
でアプリケーション全体を包む必要があります。
<BrowserRouter />
これは、フックを通して探している履歴オブジェクトを与えるものです。
ところで、引数として history.push への相対的なファイルパスを与えてはいけません。
<Route />
コンポーネント
関連
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] どのDOM要素にフォーカスがあるかを調べるには?
-
[解決済み] React-routerのURLを更新したり、手動で書き込んだりするとうまくいかない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】JS ファイルが net::ERR_ABORTED 404 (Not Found) を取得する)
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み】HTMLの最初の行に予期しないトークン<がある。