将道具从一个组件传递到另一个组件,但返回未定义的
这是我的库存。js文件,我在其中绘制并将其详细介绍为props
数据流,就像
neventory.js>>>>详细信息。 product.js
,但我不知道该如何解决此错误。在product.js中变得不确定,但其他工作发现。
我获取所有数据的自定义挂钩。
useproducts.js
const baseURL = "http://localhost:5000/inventory";
const useProducts = () => {
const [products, setProducts] = useState([])
useEffect(() => {
axios.get(`${baseURL}`).then((res) => {
setProducts(res.data);
// console.log(setProducts)
});
}, []);
return [products, setProducts]
};
inting.js
const Inventory = () => {
const [products, setProducts] = useProducts([]);
// console.log(products)
return (
<div>
<div className="products-container">
{products.map((product) => (
<Detail key={product._id} product={product}/>
))}
</div>
</div>
);
};
export default Inventory;
它正常工作,这是我的详细
。
const Detail = (props) => {
const { _id, name, description, price, supplier_name, url, quantity } = props.product;
const navigate = useNavigate();
const goProduct = (id) => {
navigate(`/inventory/${id}`);
console.log("Product clicked")
console.log(props.product);
};
return (
<div>
<div className="product-contrainer">
<div className="product-card">
<img src={url} className="product-image" id="image-product" alt="" />
<h4 className="product-title">Product Name: {name}</h4>
<p className="product-text price">Price: {price}$</p>
<div className="buttons justify-content-evenly">
<button
className="custom-btn btn-16"
onClick={() => goProduct(_id)}
product={props.product}
>
Detail
</button>
<button className="buttons-section order custom-btn btn-14">
Order
</button>
</div>
</div>
</div>
</div>
);
};
export default Detail;
信息 对于另一个称为product(product.js)的组件,这是代码,但它返回未定义。 制作了动态路线
我为那个 product.js
const Product = (props) => {
const {name, description, price, supplier_name, url, quantity} = props.props.product;
return (
<div>
<div className="product-contrainer">
<img src={url} className="product-image" alt="" />
<h4 className="product-title">Product Name: {name}</h4>
<p className="product-text description">Description: {description} </p>
<p className="product-text suplier">Suplier: {supplier_name}</p>
<p className="product-text quantity">Quantity: {quantity}</p>
<p className="product-text price">Price: {price}$</p>
</div>
</div>
);
};
export default Product;
This is my Inventory.js file where I map through and pass it in Detail component as a props
Data flow be like
Inventory.js >>> Detail.js >>> Product.js
But I don't know how can I solve this error. Getting undefined in product.js but others working find.
My Custom hook where I am getting all data.
useProducts.js
const baseURL = "http://localhost:5000/inventory";
const useProducts = () => {
const [products, setProducts] = useState([])
useEffect(() => {
axios.get(`${baseURL}`).then((res) => {
setProducts(res.data);
// console.log(setProducts)
});
}, []);
return [products, setProducts]
};
Inventory.js
const Inventory = () => {
const [products, setProducts] = useProducts([]);
// console.log(products)
return (
<div>
<div className="products-container">
{products.map((product) => (
<Detail key={product._id} product={product}/>
))}
</div>
</div>
);
};
export default Inventory;
Which is working perfectly and this my Detail.js code
Detail.js
const Detail = (props) => {
const { _id, name, description, price, supplier_name, url, quantity } = props.product;
const navigate = useNavigate();
const goProduct = (id) => {
navigate(`/inventory/${id}`);
console.log("Product clicked")
console.log(props.product);
};
return (
<div>
<div className="product-contrainer">
<div className="product-card">
<img src={url} className="product-image" id="image-product" alt="" />
<h4 className="product-title">Product Name: {name}</h4>
<p className="product-text price">Price: {price}lt;/p>
<div className="buttons justify-content-evenly">
<button
className="custom-btn btn-16"
onClick={() => goProduct(_id)}
product={props.product}
>
Detail
</button>
<button className="buttons-section order custom-btn btn-14">
Order
</button>
</div>
</div>
</div>
</div>
);
};
export default Detail;
Now I want to pass that same prop data to another component called Product(Product.js) and here is the code but it returns undefined. I made dynamic routes for that
Product.js
const Product = (props) => {
const {name, description, price, supplier_name, url, quantity} = props.props.product;
return (
<div>
<div className="product-contrainer">
<img src={url} className="product-image" alt="" />
<h4 className="product-title">Product Name: {name}</h4>
<p className="product-text description">Description: {description} </p>
<p className="product-text suplier">Suplier: {supplier_name}</p>
<p className="product-text quantity">Quantity: {quantity}</p>
<p className="product-text price">Price: {price}lt;/p>
</div>
</div>
);
};
export default Product;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您没有在
详细信息
中创建product
作为JSX组件,但是您正在导航到创建product
的组件。因此,您可以在导航期间使用路由参数
,并以此方式传递所需的数据。在您的
产品
组件中,您可以按以下方式访问它们。You are not creating the
Product
as a JSX component inDetail
, but you are navigating to a component that createsProduct
. Therefore, you can use theroute params
during navigation and pass the desired data this way.In your
Product
component, you can access them as follows.基于您的代码,我看不到
product
组件将如何在详细信息
组件中使用。但是这里的问题很可能是这样的行:您应该以这种方式访问它:
因为
props.product
作为属性作为属性传递到product
中,如此行:因此组件现在是
props.product
Based on your code, I can't see how the
Product
component will be used in theDetails
component. But the problem here is most probably this line:You should access it this way:
Because
props.product
is passed as a property intoproduct
as in this line:So within the component it is now
props.product