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})
}