我正在尝试创建一个电子商务商店,我想在每2个<ProductCard/>
组件之后渲染一个<CompanyCard/>
组件。我从来没有做过这样的事情,所以我不确定我做的方法是否正确
下面是我想要的示例:
<ProductCard/>
<ProductCard/>
<CompanyCard/>
<ProductCard/>
<ProductCard/>
<CompanyCard/>
(and so on..)
但由于某种原因,我得到了一个空白页与这2个错误在控制台
x一个一个一个一个x一个一个二个x
这是我的代码(我也在使用React Redux)
function HomePage() {
let counter = 0;
const dispatch = useDispatch();
const productList = useSelector((state) => state.productList);
const { error, loading, products } = productList;
const companyList = useSelector((state) => state.companyList);
const { companies } = companyList;
useEffect(() => {
dispatch(listProducts(), listCompanies());
}, [dispatch]);
return (
<>
<Navbar />
<div className="homePage">
<div className="centerItemsContainer">
<div className="productsContainer">
{products.map((product) => {
counter++;
if (counter % 4 === 0) {
const companyIndex = counter / 4 - 1;
const company = companies[companyIndex];
return (
<>
<CompanyCard company={company} />
<ProductCard product={product} />
</>
);
} else {
return <ProductCard product={product} />;
}
})}
</div>
</div>
</div>
<Footer />
</>
);
}
export default HomePage;
4条答案
按热度按时间cwxwcias1#
我希望这有帮助,如果你想渲染公司在第4位,请改变它为4相同的去什么地方你想要的
63lcw9qa2#
首先,看起来您只是选择了一个不存在的公司。请记录
companyIndex
并查看您使用的值。此外,不需要手动跟踪
counter
,它是map
的第二个参数,因此只需编写:ve7v8dk23#
由于迭代器超出数组长度,因此将出现错误
我更愿意使用一个普通的for循环:
最终组件:
sycxhyv74#