React JS TypeError: props.cartProductsArr is not a function
React JS TypeError: props.cartProductsArr is not a function
当我尝试通过产品购物车进行映射并以模式显示时出现类型错误。
我正在使用 redux 来存储我的状态并从其他组件访问它们。
有人可以告诉我我做错了什么吗?
这是我将产品发送到购物车状态的卡片组件:
const ProductCard = (props) => {
const product = props.product
return (
<div className="col-lg-4 col-6">
<div className="product-top">
<img src={product.image} alt={product.name} />
<div className="product-bottom">
<h3>{product.name}</h3>
<p>{`${product.price} MT`}</p>
</div>
<button className="btn add-cart-btn" onClick={() => props.addProductsToCart(product)}>Adicionar ao carrinho</button>
</div>
</div>
)
}
const mapDispatchToProps = dispatch => ({
addProductsToCart: product => dispatch(addCartProducts(product))
})
export default connect(null, mapDispatchToProps)(ProductCard);
这是我访问购物车产品名称和价格的组件:
const CartProduct = (props) => {
const { name, price } = props.product;
return (
<div>
<span>{name}</span>
<span>{price}</span>
</div>
)
}
export default CartProduct;
这是我映射购物车产品数组并设置 id 和产品本身的组件:
import React from 'react';
import { connect } from 'react-redux';
import { Modal, Button } from 'react-bootstrap';
import CartProduct from './CartProduct';
import '../../styles/_cart-dropdown.scss';
import { setCartModalStatus } from '../../redux/status/status.action';
const CartModal = (props) => {
const status = props.cartModalStatus;
return (
<Modal
size="lg"
aria-labelledby="contained-modal-title-vcenter"
centered
show={status}
onHide={props.setCartModalStatus}
>
<Modal.Header closeButton>
<Modal.Title id="contained-modal-title-vcenter">
Modal heading
</Modal.Title>
<Modal.Title id="contained-modal-title-vcenter">
Modal heading
</Modal.Title>
</Modal.Header>
<Modal.Body>
**{
props.cartProductsArr.map(cartProduct => {
return <CartProduct key={cartProduct._id} product={cartProduct}/>
})
}**
</Modal.Body>
</Modal>
)
}
const mapStateToProps = state => ({
cartModalStatus: state.status.cartmodal,
cartProductsArr: state.cart.cartProducts
})
const mapDispatchToProps = dispatch => ({
setCartModalStatus: () => dispatch(setCartModalStatus())
})
export default connect(mapStateToProps, mapDispatchToProps)(CartModal);
cartProductsArr 是一个对象而不是数组。在您的 mapStateToProps 中,从命名上我猜 state.cart 可能是您的数组。我会 console.log 你在你的 mapState 中的状态只是为了确切地知道正在传递的所有内容。
当我尝试通过产品购物车进行映射并以模式显示时出现类型错误。 我正在使用 redux 来存储我的状态并从其他组件访问它们。 有人可以告诉我我做错了什么吗?
这是我将产品发送到购物车状态的卡片组件:
const ProductCard = (props) => {
const product = props.product
return (
<div className="col-lg-4 col-6">
<div className="product-top">
<img src={product.image} alt={product.name} />
<div className="product-bottom">
<h3>{product.name}</h3>
<p>{`${product.price} MT`}</p>
</div>
<button className="btn add-cart-btn" onClick={() => props.addProductsToCart(product)}>Adicionar ao carrinho</button>
</div>
</div>
)
}
const mapDispatchToProps = dispatch => ({
addProductsToCart: product => dispatch(addCartProducts(product))
})
export default connect(null, mapDispatchToProps)(ProductCard);
这是我访问购物车产品名称和价格的组件:
const CartProduct = (props) => {
const { name, price } = props.product;
return (
<div>
<span>{name}</span>
<span>{price}</span>
</div>
)
}
export default CartProduct;
这是我映射购物车产品数组并设置 id 和产品本身的组件:
import React from 'react';
import { connect } from 'react-redux';
import { Modal, Button } from 'react-bootstrap';
import CartProduct from './CartProduct';
import '../../styles/_cart-dropdown.scss';
import { setCartModalStatus } from '../../redux/status/status.action';
const CartModal = (props) => {
const status = props.cartModalStatus;
return (
<Modal
size="lg"
aria-labelledby="contained-modal-title-vcenter"
centered
show={status}
onHide={props.setCartModalStatus}
>
<Modal.Header closeButton>
<Modal.Title id="contained-modal-title-vcenter">
Modal heading
</Modal.Title>
<Modal.Title id="contained-modal-title-vcenter">
Modal heading
</Modal.Title>
</Modal.Header>
<Modal.Body>
**{
props.cartProductsArr.map(cartProduct => {
return <CartProduct key={cartProduct._id} product={cartProduct}/>
})
}**
</Modal.Body>
</Modal>
)
}
const mapStateToProps = state => ({
cartModalStatus: state.status.cartmodal,
cartProductsArr: state.cart.cartProducts
})
const mapDispatchToProps = dispatch => ({
setCartModalStatus: () => dispatch(setCartModalStatus())
})
export default connect(mapStateToProps, mapDispatchToProps)(CartModal);
cartProductsArr 是一个对象而不是数组。在您的 mapStateToProps 中,从命名上我猜 state.cart 可能是您的数组。我会 console.log 你在你的 mapState 中的状态只是为了确切地知道正在传递的所有内容。