如何添加新的 属性 来响应 useContext 状态
how to add new property to react useContext state
有点小问题,正在学习reactjs。我正在尝试将 属性 添加到购物车数组中名为 quantity 的对象;当具有相同 id 的相似项目等于迭代器时,添加 属性 数量并增加它的值。我正在学习 React 和 javascript 我来自 python 背景所以...
这是我的代码。
const addToCart = (item) => {
if (cart.length){
for (let iter of cart){
if (iter.id===item.id){
item.quantity += 1 // this is 'NaN' if quantity wasn't declared.
setCart([...cart, item])
}else{
setCart([...cart, item])
}
}
}
}
这段代码...什么都没有!
如果我没理解错的话,如果购物车中有商品,您想要增加数量,否则将其添加到购物车?如果是,请尝试以下操作:
const [cart, setCart] = useState([]);
...
const addToCart = (item) => {
// declare the quantity property if it doesn't exist
item.quantity = item.quantity || 1;
// get the index from the cart
const i = cart.findIndex(obj => obj.id === item.id);
// if the item exists increment the quantity
if(i > -1) {
const newCart = [...cart];
newCart[i].quantity = item.quantity + 1;
setCart(newCart)
} else {
// the item doesn't exist so add it to the cart
setCart([...cart, item]);
}
}
有点小问题,正在学习reactjs。我正在尝试将 属性 添加到购物车数组中名为 quantity 的对象;当具有相同 id 的相似项目等于迭代器时,添加 属性 数量并增加它的值。我正在学习 React 和 javascript 我来自 python 背景所以... 这是我的代码。
const addToCart = (item) => {
if (cart.length){
for (let iter of cart){
if (iter.id===item.id){
item.quantity += 1 // this is 'NaN' if quantity wasn't declared.
setCart([...cart, item])
}else{
setCart([...cart, item])
}
}
}
}
这段代码...什么都没有!
如果我没理解错的话,如果购物车中有商品,您想要增加数量,否则将其添加到购物车?如果是,请尝试以下操作:
const [cart, setCart] = useState([]);
...
const addToCart = (item) => {
// declare the quantity property if it doesn't exist
item.quantity = item.quantity || 1;
// get the index from the cart
const i = cart.findIndex(obj => obj.id === item.id);
// if the item exists increment the quantity
if(i > -1) {
const newCart = [...cart];
newCart[i].quantity = item.quantity + 1;
setCart(newCart)
} else {
// the item doesn't exist so add it to the cart
setCart([...cart, item]);
}
}