【发布时间】:2021-04-15 20:51:16
【问题描述】:
我正在将数据从 App 传递到我的 Store 组件...当页面加载时,我试图使用 useState 来显示当前产品,以便稍后进行过滤。当我对此使用 useEffect 时,我得到了一个奇怪的 OBJ 返回,我不确定我做错了什么......
当我尝试在函数 filterBrand() 和 filterSize() 中使用 console.log(storeItems) 时,我正在获取第二个/第三个 OBJ 的控制台日志。不知道如何过滤,老实说,我第一次看到...尝试学习最佳实践,所以随时提供解释/示例!谢谢你:)
import React, { useState, useEffect } from "react";
import StoreItems from "./StoreItems.jsx";
import Filter from "../Filters/Filter";
const Store = ({ products, onAddToCart }) => {
const [storeItems, setStoreItems] = useState([]);
const [productSize, setProductSize] = useState("");
const [productBrand, setProductBrand] = useState("");
const [productCount, setProductCount] = useState(0);
useEffect(() => {
console.log(products)
const allProducts = products.map((product, i) => {
return (
<StoreItems key={i} product={product} onAddToCart={onAddToCart} />
);
})
console.log(allProducts)
setStoreItems(allProducts)
console.log(storeItems)
}, [])
const filterBrand = (event) => {
setProductBrand(event.target.value)
console.log(event.target.value)
console.log(storeItems)
}
const filterSize = (event) => {
setProductSize(event.target.value)
console.log(event.target.value)
console.log(storeItems)
}
return (
<main className="storeContent">
<Filter products={products} productSize={productSize} productBrand={productBrand} productCount={productCount} filterBrand={filterBrand} filterSize={filterSize} />
<div className="productContainer">
{storeItems}
</div>
</main>
);
};
export default Store;
张贴返回的屏幕截图
第一个控制台日志是 console.log(products)
第二个是console.log(allProducts)
第三个是 console.log(storeItems)
【问题讨论】:
-
渲染是否正确?
-
你为什么把所有的项目都存储在
allProducts中? -
它确实如屏幕截图所示正确渲染,但我需要按 productBrand 和 productSize 过滤这些,但返回的 OBJ 是我附加的 img 中的第二个 OBJ,所以我很好奇为什么它这样做.. 很难解析数据
-
我真的只是想在页面加载时将“产品”OBJ 设置为 storeItems,如果我做错了,请随时展示您将如何做到这一点!真的很好奇并试图学习最佳实践。新手在这里嘿嘿@emkarachchi
-
用
products.map((product, i) => { return ( <StoreItems key={i} product={product} onAddToCart={onAddToCart} /> ); })替换return语句中的storeItems是否有效?您还可以使用products数组来过滤数据。从渲染的UI components中过滤数据会更难
标签: reactjs react-hooks use-effect