gpt4 book ai didi

javascript - React Router 中点击 Link 后显示项目详细信息

转载 作者:行者123 更新时间:2023-11-30 15:34:11 25 4
gpt4 key购买 nike

我使用router进行路由。有一个产品列表,当单击产品时,应显示该产品的详细信息页面(产品名称,产品价格)。我尝试在查询中传递产品对象,但它不起作用。

这是我的代码

productGrid.js

const product = _.map(products, (product) =>
<Col xs={12} md={4} key={product.id} className="products">
<div className="product">
<Link to={{pathname: `product/${product.name}`, query: { query: product }}}>
<img src={product.image} className="img-responsive" />
</Link>
<span className="pull-left product-name">{product.name}</span>
<span className="pull-right price">${product.price}</span>
</div>
</Col>
);

product-view.js

class ProductView extends React.Component {
render() {
console.log('product', this.props.location.query);
return (
<div>Product View</div>
);
}
}

this.props.location.query 控制台

enter image description here

最佳答案

我建议您将产品列表作为 props 传递给 ProductView,然后使用其 id 检索产品。这样,当用户直接导航到产品时就不会产生任何负面影响。

productGrid.js

<Link to={{pathname: `product/${product.name}`, query: { id: product.id }}}>

product-view.js

class ProductView extends React.Component {
render() {
const { products, location } = this.props;

if (!products.length || !location) {
return (<div>Loading...</div>);
}

const product = products.find(p => p.id == location.query.id);

return product ? (
<div>
<h1>{product.name}</h1>
<img src={product.image} />
<p>{product.price}</p>
</div>
) : (
<div>Error: Product doesn't exist</div>
);
}
}

关于javascript - React Router 中点击 Link 后显示项目详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41820210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com