我的后台工作得很好,甚至我的redux与react js的集成也工作得很好,但是一旦我使用useEffect,它就会给出一个错误“无法读取未定义的属性”。

下面是我的代码:
const ProductListScreen = ({ match }) => {
const dispatch = useDispatch()
const shopDetails = useSelector((state) => state.shopDetails)
const { loading, error, shop } = shopDetails
useEffect(() => {
dispatch(shopDetail(match.params.shopid))
}, [dispatch, match])
if (loading) {
return (
<div className='loader'>
<Loader />
</div>
)
}
return (
<>
<Link className='btn btn-dark my-3' to='/'>
Go Back
</Link>
<h3>{shop.name} Products</h3>
{error ? (
<Message variant='warning' color='red'>
{error}
</Message>
) : (
<Row>
{shop &&
shop.products.map((product) => (
<Col key={product._id} sm={12} md={6} lg={4} xl={3}>
<Product product={product} shopId={shop._id} />
</Col>
))}
</Row>
)}
</>
)
}发布于 2021-11-11 21:03:54
<Row>
{shop &&
shop.products?.map((product) => (
<Col key={product._id} sm={12} md={6} lg={4} xl={3}>
<Product product={product} shopId={shop._id} />
</Col>
))}
</Row>使用optional chaining operator跳过未定义产品的映射
非常确定,它是真实的,所以条件是真实的,但在映射时,您仍然没有检查产品的真实性
https://stackoverflow.com/questions/69934547
复制相似问题