组件在重定向到同一页面时不呈现

Component not rendering on redirecting to same page

我正在开发一个 React 应用程序。所以我的主页里有这些组件

  1. 边栏
  2. 边栏建议
  3. 标签
  4. 标签建议

我的主要路线是这样的:

<Router>
    <Route path={["/", "/home", "/tags/:tagId"]} component ={Home}/>
</Router>

我的 Home 组件是:

<Sidebar {some Props} />

  <Router>
    <Switch>
      <Route
         exact
         path={["/", "/home"]}
         render={(props) => (
           <Suggestions {some props} />
         )}
      />
      <Route exact path="/tags/:tagId" component={TagsSuggestion} />
    </Switch>
  </Router>

<Tags { some props}  />

因此,每当我单击边栏中的任何数据时,我都希望呈现边栏建议

每当我点击标签组件中的任何标签时,它都会重定向到“ /tags/:tagId ”并附有标签 ID。

问题: 一开始,会显示边栏建议(我想要),但每当我单击标签时,边栏建议组件不会被删除,但 URL 会发生变化。而且我必须手动重新加载页面才能看到标签建议组件。

Link 对于沙盒版本:https://codesandbox.io/s/unruffled-wave-v9m3r?file=/src/Tags.js

为了使 history.push 发挥预期的作用,它 应该 放置在 Router 之内零件。只需将 Tags 组件移动到 Router 中,这样它就有一个路由器上下文可以使用。

class Home extends Component {
  render() {
    return (
      <div className="Home">
        <Sidebar />
        <Router>
          <Switch>
            <Route path="/tags/:id" component={TagsSuggestion} />
            <Route path="/" component={SidebarSuggestion} />
          </Switch>
          <Tags />
        </Router>
      </div>
    );
  }
}