[英]React pass fetched data from API to another component
我从 API 中获取一些产品,并在卡片中显示它们。 卡片上有一个 More Details 链接,如果用户点击它,它将把用户带到所选的产品详细信息页面。 我到 productDetails 页面的路由有效,但是我很难找到将获取的数据作为道具传递到 productDetails 页面的方法。
这是我到目前为止所拥有的:我的 FeaturedProduct.js:
import React from "react";
import { useState, useEffect } from "react";
import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
import ProductDetails from "./ProductDetails";
import axios from "axios";
function FeaturedProduct(props) {
const [products, setProducts] = useState([]);
useEffect(() => {
fetchProducts();
}, []);
function fetchProducts() {
axios
.get("https://shoppingapiacme.herokuapp.com/shopping")
.then((res) => {
console.log(res);
setProducts(res.data);
})
.catch((err) => {
console.log(err);
});
}
return (
<div>
<h1> Your Products List is shown below:</h1>
<div className="item-container">
{products.map((product) => (
<div className="card" key={product.id}>
{" "}
<h3>{product.item}</h3>
<p>
{product.city}, {product.state}
</p>
<Router>
<Link to="/productdetails">More Details</Link>
<Switch>
<Route path="/productdetails" component={ProductDetails} />
</Switch>
</Router>
</div>
))}
</div>
</div>
);
}
export default FeaturedProduct;
我仍在学习,但这就是我要做的:
<Route path="/productdetails">
<ProductDetails product={product}/>
</Route>
====
在 ProductDetails 上,您可以解构道具:
function ProductDetails(props) {
const {name, color} = props.product;
return (
<div>
<div>
<h1>{name}</h1>
<h1>{color}</h1>
</div>
</div>
);
}
export default ProductDetails;
如果您使用的是 v 6,则将其作为带有 props 的元素传递; 对不起,我没有问哪个版本。 >
<Switch>
<Route path="/productdetails" element={<ProductDetails {...props} />}/>
</Switch>
如果版本 v4/5 使用渲染方法 >
<Route path="/productdetails" render={(props) => (
{ <ProductDetails {...props} />} )}/>
//pass it this way
<Switch>
<Route
path="/productdetails"
render={() => (
{ <ProductDetails product={product}/>})}/>
/>
</Switch>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.