【发布时间】:2017-11-01 06:16:34
【问题描述】:
使用 React-Router 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>
)}}
我的路由看起来像这样:
<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 更新,即使组件没有改变?
【问题讨论】:
标签: javascript reactjs react-router react-router-v4