Это комбинация динамической маршрутизации с response-router-dom и использованием параметров соответствия.
Сначала, скажем, у вас есть 3 маршрута в приложении, представление списка, представление сведенийи запасной маршрут (например, страница ошибки).Это будет выглядеть примерно так:
<Router>
<Switch>
<Route exact path="/recipes" component={ListComponent} />
<Route path="/recipes/:id" component={DetailsComponent} />
<Route component={ErrorPage} />
</Switch>
</Router>
Теперь вы можете установить ссылки в вашей сетке примерно так:
<Link to={`/recipes/${item.id}`} className="recipe-styler" />
Наконец, когда вы нажимаете на ссылку,и маршрутизатор перенаправляет вам DetailsComponent, вы можете получить идентификатор ссылки следующим образом.
export class DetailsComponent extends React.Component {
componentDidMount() {
const { match } = this.props;
if (match) {
// This line is pseudocode.
// Use the id to get the item details from api, redux or wherever.
api.get(params.id)
}
}
render() {
...
}
}
Маршрутизатор внедрит объект match.params, когда он разрешит маршрут.Имя реквизита из объекта params зависит от того, как вы назвали его в объявлении маршрутизатора, например
<Route path="/recipes/:recipeId" component={DetailsComponent} /> // params.recipeId
<Route path="/recipes/:id" component={DetailsComponent} /> // params.id