Как вывести sh новое значение в массив объекта в React - PullRequest
0 голосов
/ 27 апреля 2020

Я думаю, что это глупый вопрос, но поверьте, я новичок в React. Я пытаюсь добавить sh новый ключ и значение в массив объекта, но я не могу это сделать. Может кто-нибудь, пожалуйста, помогите мне, как достичь моей цели. Спасибо

Код

this.state= {
cartItems=[
{name:'item1',price:'$23'},
{name:'item2',price:'$26'},
{name:'item3',price:'$24'},
]

Я хочу добавить новое значение, например quantity:0, в конец массива объекта. Пожалуйста, помогите мне

Ответы [ 3 ]

1 голос
/ 27 апреля 2020

Если вы хотите обновить состояние, добавляя свойство к каждому объекту, вы должны просто использовать 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, просто сопоставьте массив напрямую.

0 голосов
/ 27 апреля 2020
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})
}
0 голосов
/ 27 апреля 2020

Может быть, попробовать это

const newState = this.state.cartItems.map(item => {
  item.quantity = 0;

  return item;
});

this.setState({cartItems: newState});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...