У меня есть приложение React, в котором параметры поиска включены в панель навигации и доступны в любом месте приложения. Всякий раз, когда пользователь выполняет поиск, а затем нажимает на один из продуктов, он должен отправить его в подробный вид этого продукта.
Проблема, с которой я сталкиваюсь, связана с маршрутизацией. Каждый раз, когда я ищу продукт и нажимаю на него в первый раз, он правильно перенаправляет, например, на http://localhost:3000/catalogue/women/sportive-shoes-sneakers/sneakers--low-top-sneaker/292487
. Однако, если я попал в этот маршрут и попытался go отправить пользователя другому продукту, он сформулирует URL-адрес следующим образом: http://localhost:3000/catalogue/women/sportive-shoes-sneakers/sneakers--low-top-sneaker/catalogue/men/denim-pants/jeans/293140
. Как видите, он вкладывает имена путей один за другим.
Мой код выглядит следующим образом:
this.state.displayProducts.map((product, index) => {
return (
<NavLink strict to={{
pathname: `catalogue/${StringUtil.getUrlFromString(product.line)}/${StringUtil.getUrlFromString(product.familyName)}/${StringUtil.getUrlFromString(product.subfamilyName)}/${product.id[0] || product.id}`,
selectedProduct: product
}} key={index}>
<div className="catalogue-productlist-product" onClick={this.props.wipeInput && this.props.wipeInput}>
<img src={product.images && product.images[0] ? product.images[0].replace('{authorization}', this.props.token) : this.props.placeholder}
alt="Category" onError={this.imgError} />
<div>
{product.productName}
</div>
</div>
</NavLink>
)
})
И мой маршрут выглядит так:
<Route
exact path="/catalogue"
render={(props) => (
window.location.search.length > 0 ?
<ProductList />
:
<Slider
{...props}
categories={this.props.categories}
/>
)}
/>
<Route
exact path={`/catalogue/search/:qs`}
component={ProductList}
/>
<Route
exact path={`/catalogue/:line/:family?/`}
render={(props) => (
<Slider
{...props}
categories={this.props.categories}
/>
)} />
<Route
exact path={`/catalogue/:line/:family/:subfamily`}
component={ProductList} />
<Route
exact path={`/catalogue/:line/:family/:subfamily/:product`}
component={ProductDetail} />
Как бы один go об этом работал, как задумано? ie: независимо от текущего маршрута, пользователя всегда следует отправлять туда, куда его отправляет навигационная ссылка.