Это потому, что, когда вы переходите к /new-post
, два пути маршрута совпадают. Когда вы пишете: path="/:id"
, id (необязательный параметр маршрута) может быть любым, числом, строкой и т. Д., Поэтому id станет /new-post
и будет также отображаться FullPost
, поэтому.
Решение состоит в том, чтобы использовать Переключатель (он всегда будет отображать компонент с первым совпавшим путем) из react-router
, чтобы избежать сопоставления нескольких путей, так что только один компонент будет отображаться при сопоставлении пути маршрута , Как это:
<Switch>
<Route path="/" exact component={Posts} />
<Route path="/new-post" exact component={NewPost} />
<Route path="/:id" exact component={FullPost} />
</Switch>