React router 4 - 为什么我的组件仅在手动设置网址时呈现,而不是在点击具有相同网址的链接时呈现?

时间:2018-02-13 12:12:51

标签: reactjs react-router react-router-v4

我开始使用react router v4,我有2个问题。我一直在研究和阅读路由器4,但无法解释为什么会发生以下情况: PS。我只包含了我认为相关的代码,请告诉我是否应该更多。

<BrowserRouter>
   <div>
       <Route path="/" component={PostsIndex} />
       <Route path="/posts/new" component={PostsNew}></Route>
   </div>
</BrowserRouter>

PostsIndex:

<Link to="/posts/new">Add a Post</Link>

1。以下代码所发生的事情是路线&#39; /&#39;我正在展示PostsNew组件。当我手动将网址添加到&#39; / posts / new&#39;两个组件都被渲染 - PostsIndex和PostsNew是有意的。然而,当我在&#39; /&#39;并点击我的链接(路径:/ posts / new)没有任何反应。除非我刷新页面,否则PostsNew组件不会被渲染(因此,在我点击链接后我已经更改了url但我需要刷新它 - url保持相同 - 然后才会渲染嵌套组件)。为什么会这样?

另一个问题: 下面我想实现相反的 - 非嵌套路线。当我使用开关并首先放置最具体的路线时,它可以工作。此外,当我单击链接时,PostsNew正在呈现而无需刷新。我的问题只是更好地理解路由:

  1. 我希望在下面的代码中,两个组件都呈现在/ posts / new上 - 但是这里的PostsNew组件永远不会被渲染。为什么?
  2. 为什么我使用Switch时我的链接工作?如果我不这样做,我必须手动刷新/放置网址?谢谢!

               

1 个答案:

答案 0 :(得分:0)

如果您只想要一个特定的渲染路径,则需要在Routes中添加一个确切的属性:

<Route exact path="/" component={PostsIndex} />
<Route exact path="/posts/new" component={PostsNew}/>