【发布时间】:2021-06-06 11:19:38
【问题描述】:
当props.data 从顶部组件更改时,我无法使以下代码呈现网格项。
import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Grid from '@material-ui/core/Grid';
import ProductCard from './ProductCard';
const useStyles = makeStyles((theme) => ({
grid: {
padding: "8px",
},
}));
export default function CenteredGrid(props) {
const classes = useStyles();
const visibleProductData = props.data === null ? {} : props.data;
return (
<Grid container >
{console.log("This is from the product card grid")}
{console.log(visibleProductData)}
{Object.entries(visibleProductData).map(productData => (
<Grid key={productData[0]} className={classes.grid} item md={3} sm={6} xs={12}>
<ProductCard data={productData[1]}/>
</Grid>
))}
</Grid>
);
}
当我运行它时,在数据更新后,控制台会记录visibleProductData,这是一个由三个产品组成的字典,正如预期的那样。但是这些产品是不可见的,事实上,当我检查时,我没有看到 Grid 容器的子项。奇怪的是,即使对代码进行了微小的更改,当发生快速刷新时,产品也会变得可见。这里可能有什么问题?
PS:我正在使用 nextjs 和 material ui。
编辑/更新 - 父组件
const classes = useStyles();
const { buyer, categoryData, filterData, visibleProductData } = useContext(BuyerContext);
if (!buyer) {
return (
<AuthRequired/>
)} else {
return (
<>
<HeaderBar/>
<Grid className={classes.breadcrumb} container>
<Breadcrumb />
</Grid>
<Divider variant="middle" />
<main className={classes.main}>
<Grid container>
<Grid item xs={2}>
<Box display={{ xs: 'none', sm: 'block' }}>
<CategoryList data={categoryData}/>
</Box>
</Grid>
<Grid item sm={10} xs={12}>
<FilterGrid data={filterData}/>
<ProductCardGrid data={visibleProductData}/>
</Grid>
</Grid>
</main>
<Footer/>
</>
)
}
}
【问题讨论】:
标签: reactjs material-ui next.js