【发布时间】:2021-02-07 02:44:04
【问题描述】:
第一次尝试这样做,请多多包涵。
我正在使用下拉菜单根据类别从本地 JSON 文件中过滤产品数据。当用户选择一个类别时,下面的代码会根据类别过滤和显示产品。但是,我想在用户选择类别之前显示所有加载的产品。目前它只显示一个空白页面,直到用户单击一个类别,然后它会过滤并显示产品。
这是过滤器代码:
// Load in global state
const { data, isLoading } = useAPI();
const [selectedCategory, setSelectedCategory] = useState("All");
const filteredCategories = data.filter(
(machine) =>
machine.category.toLowerCase() === selectedCategory.toLowerCase()
);
JSON 是 here。
下拉代码:
<div className="options">
{!isLoading ? (
<>
<select
value={selectedCategory}
onChange={(e) =>
setSelectedCategory(e.target.value)}
className="product-dropdown"
name="product-dropdown"
>
<option value="">All</option>
{data.map((item) => (
<option value={item.category}>{item.category}</option>
))}
</select>
</>
) : (
<p>Loading...</p>
)}
</div>
最后是渲染产品的代码:
export default function MachineList({ filteredCategories, filteredSearch }) {
return (
<>
{filteredCategories.map((item) => (
<ul>
{/* Filter and map through the second level of API */}
<div className="row">
{item.product_details.filter(filteredSearch).map((subItem) => (
<MachineCard
image={subItem.image}
title={subItem.model}
weight={subItem.operating_weight}
power={subItem.power}
/>
))}
</div>
</ul>
))}
</>
);
}
知道如何在加载时显示所有产品吗?
【问题讨论】:
标签: javascript json reactjs