javascript - Div 在 React JS 中出现和消失
问题描述
我想在点击时显示卡片上的内容(标记为红色并product.description
在代码中命名),但我不知道有什么办法。
卡片上的内容是从 JSON-server 获取的。
这是一些代码
第一个js用于从服务器获取数据并显示在页面上,第二个是在页面上显示数据的方法。一般来说,我希望p标签在用户单击名为的主 div 时出现和消失
Product-Preview
import { useEffect, useState } from "react";
import ProductList from "./ProductList";
const Products = () => {
const [products, setProducts] = useState (null);
useEffect (() => {
fetch('http://localhost:8000/products')
.then(res => {
return res.json();
})
.then(data => {
setProducts(data);
})
}, []);
return (
<div className="ProductList">
{products && <ProductList products={products}/>}
</div>
);
}
export default Products;
const ProductList = (props) => {
const products = props.products;
return (
<div className="ProductList" >
{products.map((product) => (
<div className="Product-Preview" key={product.id}>
<div className="backdrop" style={{backgroundImage: `url(${product.image})`}}></div>
<h2>{ product.title }</h2>
<p>{ product.description }</p>
<div>{ product.price }</div><br />
</div>
))}
</div>
);
}
export default ProductList;
解决方案
您应该创建一个组件并使用该组件中的状态来执行此操作。
示例组件的名称为Card
const Card= ({ product }) => {
const [showDescription, setShowDescription] = useState(false);
return (
<div
className="Product-Preview"
onClick={() => setShowDescription(!showDescription)}
>
<div className="backdrop" style={{ backgroundImage: `url(${product.image})` }}></div>
<h2>{product.title}</h2>
{showDescription && <p>{product.description}</p>}
<div>{product.price}</div>
<br />
</div>
);
};
并在地图中使用这个组件
{
products.map((product) => <Card product={product} key={product.id} />);
}
推荐阅读
- javascript - 无法使用 javascript 转换在文本框中键入浮点值
- python - 如何从在for循环中迭代的函数返回值
- python - 如何使用 pandas agg 对布尔值求和并始终获得数字作为结果?
- time-series - 绘制时间序列+偏移量不起作用
- dart - 根据内存管理是说最终类型变量还是说最终变量更好
- python - 如何在一个压缩文件和一个未压缩文件上运行`diff`?(bash 或 python)
- c# - 将对象传递给 WCF 端点
- android - 使用 Flutter 在后台上传到 Firestore
- c# - 使用删除空列的 OnDataBound 事件为动态创建的 GridView 表动态显示和隐藏 jQuery DataTables 列
- sql - 将三个不同的 select 语句组合成一 (1) 个