Javascript 如何在React中将新值推送到对象数组中
我想问这个问题可能很愚蠢,但相信我是个新手。我试图将新的键和值推送到对象数组中,但我无法做到这一点。有人能帮我实现我的目标吗。谢谢 代码Javascript 如何在React中将新值推送到对象数组中,javascript,reactjs,ecmascript-6,react-redux,ecmascript-2016,Javascript,Reactjs,Ecmascript 6,React Redux,Ecmascript 2016,我想问这个问题可能很愚蠢,但相信我是个新手。我试图将新的键和值推送到对象数组中,但我无法做到这一点。有人能帮我实现我的目标吗。谢谢 代码 this.state= { cartItems=[ {name:'item1',price:'$23'}, {name:'item2',price:'$26'}, {name:'item3',price:'$24'}, ] 我想在对象数组的末尾添加新值,如quantity:0。请帮帮我也许试试这个 const newState = this.state.ca
this.state= {
cartItems=[
{name:'item1',price:'$23'},
{name:'item2',price:'$26'},
{name:'item3',price:'$24'},
]
我想在对象数组的末尾添加新值,如quantity:0
。请帮帮我也许试试这个
const newState = this.state.cartItems.map(item => {
item.quantity = 0;
return item;
});
this.setState({cartItems: newState});
如果要更新状态并向每个对象添加属性,只需将
setState
与map
结合使用即可Array.prototype.map
允许您变换每个对象,如下所示:
this.setState(state => {
cartItems: state.cartItems.map(cartItem => ({
...cartItem, // Keep all old properties
quantity: 0 // Add quantity
})
})
只有在初始值设定项之后调用
setState
时,才应执行此操作。如果在分配给this.state
时需要正确修改数据,只需直接映射数组。它的状态在DOM或对象中没有更新吗?到目前为止,您做了哪些工作来实现这一点?你在哪里卡住了?我用谷歌搜索了你的线程标题:你是想为每个对象添加数量:0
,还是在数组末尾添加一个单独的对象?这回答了你的问题吗?您是否调用了UpdateCarItems函数?比如ex:componentDidMount(){this.updateCartItems()}是的,我在componentDidMount中调用了这个方法只是为了突出显示它,您使用了filter
而不是map,并编写了quality
而不是quantity
this.state= {
cartItems:[
{name:'item1',price:'$23'},
{name:'item2',price:'$26'},
{name:'item3',price:'$24'},
]
}
updateCartItems=()=>{
var cartItems = this.state.cartItems.map((item)=>{
return {...item,quantity:0}
})
this.setState({cartItems})
}