React-Router 4を使用する場合、プログラムによって生成された特定のNavLinkは、一貫してアクティブとしてマークされません。リアクタ - ルータ4 - 共有コンポーネントを含むNavLinkが更新されない
<NavLink to="/">Home</NavLink>
<NavLink to="/books">Books</NavLink>
<NavLink to="/poems">Poems</NavLink>
{['hamlet', 'macbeth'].map(play => (
<NavLink to={`/plays/${play}` key={`play-${play}`}}>{play}</NavLink>
)}}
そして、私のルーティングは、このようなものになります:私はこのようになりますフロントエンド反応でサイドバー持っている私はプレーリンクの1つにの間を移動すると
<Switch>
<Route path="/" component={HomePageComponent} exact />
<Route path="/books" component={BooksComponent} />
<Route path="/poems" component={PoemsComponent} />
<Route path="/plays/:title" component={PlayComponent} />
<Route path="/plays/:title/:act" component={ActComponent} />
</Switch>
を、 /books
から/plays/macbeth
になると、NavLinkはタブを適切に更新します。 をの間で移動すると、/plays/macbeth
から/plays/hamlet
になると、NavLinkは更新されず、元のタブ(この場合はMacbeth)はアクティブのままです。
コンポーネントが変更されていないため、NavLink isActiveチェックの何かが起動していないという問題があると思われます。これは、別のサブリンク、たとえば/plays/hamlet/actI
、次に/plays/macbeth
に移動すると、Macbethタブが期待どおりにアクティブとしてマークされているという事実によってさらに確認されます。ですから、コンポーネントが変更されていなくても、NavLink
を強制的に更新する方法はありますか?
提案していただきありがとうございます:私はそれを試み、おそらくそれを反映するために私の質問を更新する必要があります。サブセクション(例えば '/ plays/hamlet/actI')__stopped__はサイドバーでアクティブとマークされているので、問題を解決できないだけでなく、実際に問題が悪化しました。これは意図した結果ではありません。 – MBrizzle
更新された提案が修正されました。ありがとうございます。コンポーネントが変更されていなくても再レンダリングを強制して、NavLinkの問題を修正したようです。 – MBrizzle