React-Router v4でリアクションアプリを設定しようとしています。 私は、動的経路パラメータを使ったナビゲーションと、動的経路パラメータを取るコンポーネントを使ってアプリケーションテンプレートの領域を対象とする機能が必要です。 v4のドキュメントによると、私はこのような私のルートを定義する必要があります。テンプレート領域を使用した動的パラメータ
const routes = [
{
exact: true,
path: '/vpcs',
navLevel2:() => <VpcList></VpcList>,
mainContent:() => <h1>Hello VPCs</h1>
},
{
exact: true,
path: '/vpcs/:vpcName',
navLevel2:() => <VpcList></VpcList>,
mainContent:() => <Vpc></Vpc>
}
]
その後、私が行うことができます。
<BrowserRouter basename="/">
<div>
<nav>
<ul>
<li><NavLink to="/vpcs">Vpcs</NavLink></li>
</ul>
</nav>
<nav>
{routes.map((route, index) => (
<Route
key={index}
path={route.path}
exact={route.exact}
component={route.navLevel2}
/>
))}
</nav>
<main>
{routes.map((route, index) => (
<Route
key={index}
path={route.path}
exact={route.exact}
component={route.mainContent}
/>
))}
</main>
</div>
</BrowserRouter>
をしかし、Vpc
に:vpcName
に値を渡す方法がないようですコンポーネントを必要とします。私はルート/vpc/my-vpc-name
をコンソールログにヒットすると
Uncaught TypeError: Cannot read property 'params' of undefined at new Vpc ...
は私が試したcomponent={route.mainContent}
の代わりに、と仕事をしなければならないかを確認するには、次の
component={() => (<p>{JSON.stringify(arguments)}</p>)}
そして、それは
{"0":{"i":480,"l":false,"exports":{}},"1":{}}
をもたらしました
...これは奨励していません。
私は何をしますか?動的ルートパラメータを取得しながらテンプレートリージョンを動作させるには、v3に巻き戻す必要がありますか?代わりにあなたの<Route>
タグでcomponent
を使用しての
を私はあなたが投稿コードで小さな例を作った:https://codesandbox.io/s/v61p95k850は入力してみてください:/小さなブラウザではvpcs/3452と表示されます。 – knowbody
@knowbody:それはうまくいきました。私はそれをアップヴォートして受け入れるためにこれを答えとして入力してください。 – Faust