私はちょうどreact-router
を拾いました。私は間違ったことをしていると確信しています。異なるルータの同じルートでリアクタルータのルートが変更されない
私は3つのリンクが同じコンポーネントを指しています。違いは、URLで渡された2つのパラメータである:私は3つのチャートのいずれかのリンクをクリックした場合
<Router>
<div>
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/chart/0/0">Chart</Link></li>
<li><Link to="/chart/1/0">Chart with grid</Link></li>
<li><Link to="/chart/1/1">Chart with grid and axis</Link></li>
<li><Link to="/doesnotexist">This link does exist</Link></li>
</ul>
<hr/>
<Switch>
<Route exact path="/" component={Home}/>
<Route path="/chart/:grid/:axis" render={
props => <Chart grid={props.match.params.grid === '1'} axis={props.match.params.axis === '1'} />
}/>
<Route component={NoMatch}/>
</Switch>
</div>
</Router>
、私は渡された右props
で、レンダリングされた右のチャートを得ます。別のグラフリンクをクリックしても何も変わりません。他のリンク(「自宅」または「存在しません」)のいずれかをクリックしてからチャートをクリックすると、適切に表示されます。明らかに、パラメータだけが変更されてもルーティングは発生しません。
ルーティングを毎回行うようにするにはどうすればよいですか、それとも間違っていますか?同じコンポーネントにパラメータ/小道具を渡すより良い方法はありますか?あなたは、例えばチャート内部の何かを更新したい場合はあなたが簡単に
const { axis, grid } = this.props.params
を使用してチャートコンポーネント内でこのグリッド/アクセス小道具にアクセスすることができます
<Route path="/chart/:grid/:axis" component={Chart} />
あなたは、コードの上に簡素化することができ
そして2.私の内部コンポーネントは 'Route'の小道具を認識しました。つまり、' match'オブジェクトを解析する必要があります。これは、再利用できないためです。したがって、 'match.params'オブジェクトだけを' props'としてコンポーネントに渡す別の方法がない限り、 'Route'に' component'ではなく 'render'を使わなければなりません。 –