私は、1つの中心的な場所ではなく、アプリケーション全体にルーティングを広げるというリアクションルータの4つの考え方を受け入れようとしています。 >簡潔にするために、< のAppは効果的に次のように吐き出す)(をレンダリング:リアクタ・ルータ・コンポーネントは自身の子をレンダリングできませんか?
<BrowserRouter>
<Link to='/' />
<Link to='/linkb' />
<Switch>
<Route exact path='/' component={ComponentA}>
<Route exact path='/linkb' component={ComponentB>
</Switch>
</BrowserRouter>
... これまでのところは良い:ナビゲーションリンクは対応する成分Aにルーティングするために私を助け、 Bと私の2ページアプリは正常に動作します。
問題は、コンポーネントB内で、独自の子ルートを使用したいということです。これらのルートは<App/>
の「孫」になりますが、<App/>
がそれらについて知っているか気にする必要はありません。私はリンクCまたはリンクDをクリックすると、
成分B
import React, { Component } from "react";
import { BrowserRouter, Switch, Route, Link } from 'react-router-dom';
import ComponentC from './ComponentC';
import ComponentD from './ComponentD';
export default class ComponentB extends Component {
constructor(props) { super(props);}
render() {
return (
<div>
<div>
<Link to='/linkb/c' className='btn'>link C</Link>
<Link to='/linkb/d' className='btn'>link D</Link>
</div>
{this.props.children}
<Switch>
<Route exact path="linkb/c" component={ComponentC}/>
<Route exact path="linkb/d" component={ComponentD}/>
</Switch>
</div>
);
}
}
ブラウザバーのURLの更新が、何も変わりません:私はこれを(主にわかりやすくするためにリッピング周囲のコンテンツやCSSのもの)に構築しました新しいコンポーネントはレンダリングされません。私は間違って何をしていますか?
routeコンポーネントでexactを指定したため、 'path ="/linkb/c "'を実行した場合はどうなりますか? – Win
その時点でURLは何を言いますか? –
@AlexGuerraブラウザのURLが正しく更新されます(例:http:// localhost:3000/linkb/c')。ページ自体は変更されず、新しいコンポーネントはレンダリングされません。私はちょうどそのページが空ではないことに気づいた、私は私のQを更新する必要があります – yen