[解決済み】オプションのパスパラメータを持つReact Router
質問
私は、オプションのパスパラメータを持つパスを宣言したいのですが、それゆえ、私がそれを追加したときに、ページが何か特別なことをする(例えば、いくつかのデータを埋める)ようにしたいのです。
http://localhost/app/path/to/page <= ページをレンダリングする http://localhost/app/path/to/page/pathParam <= レンダリングページに pathParamに従った何らかのデータ
私のリアクトルーターでは、2つのオプションをサポートするために、以下のパスを持っています(これは単純化された例です)。
<Router history={history}>
<Route path="/path" component={IndexPage}>
<Route path="to/page" component={MyPage}/>
<Route path="to/page/:pathParam" component={MyPage}/>
</Route>
</Router>
質問なのですが、それを 1 ルートで使用できますか?2行目だけを追加すると、パラメータなしのルートが見つかりません。
EDIT#1:
解決策に言及 ここで について、以下の構文でうまくいきませんでしたが、これは適切なものでしょうか?ドキュメントに記載されているのでしょうか?
<Route path="/product/:productName/?:urlID?" handler={SomeHandler} />
react-routerのバージョンは1.0.3です。
解決方法を教えてください。
投稿された編集は、古いバージョンのReact-router(v0.13)に対して有効であり、もう動作しません。
React Router v1、v2、およびv3
バージョンから
1.0.0
でオプションのパラメータを定義します。
<Route path="to/page(/:pathParam)" component={MyPage} />
で、複数の オプション パラメータを指定します。
<Route path="to/page(/:pathParam1)(/:pathParam2)" component={MyPage} />
括弧を使用する
(
)
を使用して、ルートのオプション部分を囲みます。
を含む
先頭のスラッシュ (
/
). を確認してください。
ルートマッチングガイド
のページをご覧ください。
注意事項
は
:paramName
パラメータは URL セグメントにマッチします。
/
,
?
または
#
. パスとパラメータについては特に。
詳しくはこちら
.
React Router v4以上
React Router v4 は v1-v3 と根本的に異なり、オプションのパス・パラメータは 公式ドキュメント のどちらかです。
代わりに
path
パラメータは
パスから正規表現へ
を理解します。これにより、繰り返しのパターンやワイルドカードなど、パスの定義をより柔軟に行えるようになります。つまり、あるパラメータをオプションとして定義するには、末尾にクエスチョンマーク (
?
).
このように、オプションのパラメータを定義する場合は、次のようにします。
<Route path="/to/page/:pathParam?" component={MyPage} />
で、複数の オプション パラメータを指定します。
<Route path="/to/page/:pathParam1?/:pathParam2?" component={MyPage} />
注 React Router v4 は 非互換 と react-router-relay ( 続きはこちら ). 代わりにバージョン v3 以前(v2 を推奨)を使用してください。
関連
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React JSX内のループ
-
[解決済み] React-routerのURLを更新したり、手動で書き込んだりするとうまくいかない
-
[解決済み] クエリ文字列からパラメータ値を取得する方法は?
-
[解決済み] React Router v4で履歴にプッシュする方法は?
-
[解決済み] Reactでブラウザのリサイズ時にビューを再描画する
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】react router v4 / v5でネストされたルート
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】最大呼び出しスタックサイズ超過エラーとその修正方法とは?
-
[解決済み] テスト
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み】中央値の計算 - javascript