【发布时间】:2021-12-26 06:48:15
【问题描述】:
我正在使用上下文处理购物车。我的问题是更改具有对象数组的状态。
我的数组看起来像这样[{itemId: 'ps-5', qty:4}, {itemId: 'iphone-xr', qty:2}]
这是我的代码检查评论
export const CartContext = createContext()
class CartContextProvider extends Component {
state = {
productsToPurchase: []
}
addProduct = (itemId)=> {
if (JSON.stringify(this.state.productsToPurchase).includes(itemId)){
// Add one to the qty of the product
this.state.productsToPurchase.map(product=>{
if (product.itemId === itemId){
// This is wrong I have to use setState(), but the syntax is a little bit complex
product.qty = product.qty + 1
}
})
}
else {
this.state.productsToPurchase.push({itemId: itemId, qty: 1})
}
}
render() {
return (
<CartContext.Provider value={{...this.state, addProduct: this.addProduct}}>
{this.props.children}
</CartContext.Provider>
)
}
}
export default CartContextProvider;
【问题讨论】:
-
您是否有要分享的具体问题或错误情况,或者您尝试开始工作但无法编写代码示例,或者您只是想找人为您编写代码?跨度>
-
您在这里遇到什么问题?
-
@decpk 我正在尝试使用
useState()来更改对象数组中的某个值。 -
我的数组看起来像这样
[{itemId: 'ps-5', qty:4}, {itemId: 'iphone-xr', qty:2}]我将编辑我的问题,以便向大家提及。 -
@asemshaat 你有一个类组件,
useState是一个钩子,钩子在类组件中不起作用
标签: javascript reactjs react-context